对不起,标题混乱,但这是我的问题描述。
| id|dateKey|colA|colB|colD|colE|
+---+-------+----+----+----+----+
| 1 |180111 | 1 | 5 |Null|Null|
| 2 |180111 |Null|Null| 6 | 7 |
| 3 |180111 | 2 | 5 | 3 | 2 |
我具有上述表格数据,但是当按日期汇总(例如,总和)数据时,我希望结果显示如下:
|dateKey|colA|colB|colD|colE|
+-------+----+----+----+----+
|180111 | 3 | 10 |9 |9 |
在努力实现目标时,有没有办法做到这一点?
注意:此查询将在具有日期过滤器的10 Gb数据上运行。
答案 0 :(得分:3)
带有SUM
的简单SELECT
dateKey,
SUM(colA) AS colA,
SUM(colB) AS colB,
SUM(colD) AS colD,
SUM(colE) AS colE
FROM yourTable
GROUP BY dateKey;
查询应该已经满足您的需求:
SUM
之所以可行,是因为NULL
默认情况下会忽略pageVisibilityTracker
值,因此只有存在的数字才应以总和结束。
答案 1 :(得分:1)
您还可以使用ISNULL
忽略null
并将其转换为零,如下所示。
create table #temp (id int, dateKey int, colA int, colB int, colD int, colE int)
insert into #temp values (1,180111, 1 , 5 ,Null,Null),
( 2,180111, Null , Null , 6 , 7 ),
( 3,180111, 2 , 5 , 3 , 2 )
SELECT
dateKey,
SUM(ISNULL(colA,0)) AS colA,
SUM(ISNULL(colB,0)) AS colB,
SUM(ISNULL(colD,0)) AS colD,
SUM(ISNULL(colE,0)) AS colE
FROM #temp
GROUP BY dateKey;