我有一个包含以下字段的表:
ID, S, W
和数据赞:
1,s1,w1
1,s2,w1
1,s3,w2
2,s4,w2
我想为W = w1计算每个Id的S的SUM,而对于没有任何w1数据的其他ID计算零。对于这个例子我必须得到
1, s1+s2, w1
2, 0, null or 0
这意味着如果Id有w1只显示这一些,但如果Id = 2只有W不同的w1也显示它。 我试过了
SUM(CASE W = w1 THEN S ELSE 0 END) AS S GROUP BY ID, W
W不怎么也显示?我希望我很清楚是UDF的一部分,其中涉及很多其他表。任何帮助将不胜感激。
答案 0 :(得分:1)
你能否拥有第二个Case声明?比如CASE WHEN W = w1那么W END 0结束为W?
答案 1 :(得分:1)
如果我理解正确,你想:
SELECT ID,
SUM(CASE WHEN W = 'w1' THEN S ELSE 0 END) AS S,
CASE WHEN W = 'w1' THEN W ELSE 0 END AS W
FROM YourTable
GROUP BY ID,
CASE WHEN W = 'w1' THEN W ELSE 0 END
答案 2 :(得分:1)
以下是否适用于您?
Select id, SUM(CASE W = w1 THEN S ELSE 0 END) over(Partition by id order by 1) total, W from yourtable