特别小组&和

时间:2013-04-11 17:50:25

标签: sql

我有一个包含以下字段的表: 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的一部分,其中涉及很多其他表。任何帮助将不胜感激。

3 个答案:

答案 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