【问题标题】:Return first non null value in each column返回每列中的第一个非空值
【发布时间】:2019-12-07 06:16:39
【问题描述】:

我希望从表中创建按天和客户 ID 的摘要/汇总(表目前正在从多个来源更新)。

对于每个客户 ID 和交易日期,我希望在该列中为该组合获取最小值、最大值、总和或第一个非空值。我对最小值、最大值和总和没有任何问题,但我正在寻找有关如何最好地处理列中第一个非空值的建议。

我的表样例:

Cust ID  Trans Date   Housing    Housing $    Retail    Retail $   Arrival
123      1/1/2019     test1      $500.00      NULL      NULL       1/1/2019
123      1/1/2019     NULL       NULL         product1  $15.00     NULL
1235     5/10/2019    test2      $1,000.00    NULL      NULL       5/10/2019
1234     10/15/2019   test2      $1,000.00    NULL      NULL       10/15/2019    
1234     10/15/2019   NULL       NULL         product2  $25.00     NULL

我正在寻找的结果:

123      1/1/2019     test1      $500.00      product1  $15.00     1/1/2019
1235     5/10/2019    test2      $1,000.00    NULL      NULL       5/10/2019
1234     10/15/2019   test2      $1,000.00    product2  $25.00     10/15/2019

【问题讨论】:

    标签: sql null


    【解决方案1】:

    SQL 表代表无序 集合。列中没有“第一个值”——NULL 或其他——除非列指定了顺序。

    但是,对于您的结果集,简单的聚合似乎就足够了:

    select CustID, TransDate, max(Housing), max(Housing$), max(Retail), max(Retail$), max(Arrival)
    from t
    group by CustID, TransDate;
    

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 2017-06-24
      • 2021-06-18
      • 2017-05-15
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多