0

次のフィールドを持つテーブルがあります: 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 が w1 と異なる W しかない場合はそれも表示されます。私は試した

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

私があなたのことを正しく理解していれば、あなたは次のことを望んでいます:

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 に答える