返回每列中的第一个非零值



我希望按日常创建摘要/汇总,并从表中创建客户ID(当前表正在从多个来源进行更新(。

对于每个客户ID和交易日期,我要么希望在该列中获得最小值,最大,总和或第一个非零值。我对Min,Max和Sum没有问题,但是正在寻找有关如何最好地处理列中第一个非零值的建议。

样本我的桌子的样子:

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或其他 - 除非列指定订购。

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

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

相关内容

  • 没有找到相关文章

最新更新