在每列中返回第一个非空值

时间:2019-07-29 21:42:16

标签: sql null ignore

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

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

我的桌子的外观示例:

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

1 个答案:

答案 0 :(得分:0)

SQL表表示无序集。列中没有“第一个值”-NULL或其他方式-除非列中指定顺序。

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

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