0

我有一个包含以下字段的表: ID, S, W和数据喜欢:

1,s1,w1
1,s2,w1
1,s3,w2
2,s4,w2

我想计算每个 Id 的 SUM 仅适用于 W = w1 和零作为没有 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 的一部分,其中涉及许多其他表。任何帮助将不胜感激。

4

3 回答 3

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
于 2013-04-11T18:02:22.033 回答
1

以下内容对您有用吗?

Select id, SUM(CASE W = w1 THEN S ELSE 0 END) over(Partition by id order by 1) total, W from yourtable
于 2013-04-11T18:04:46.130 回答
1

你不能有第二个 Case 语句吗?就像 CASE WHEN W = w1 THEN W ELSE 0 END as W 一样?

于 2013-04-11T17:56:41.333 回答