我有一张这样的表:
Client ID Value
1 1 10
1 2 20
2 1 12
2 2 15
2 1 34
理想的结果是客户对不同列中的每个ID进行值列(sum)分组的混合:
Client SUM_VALUE_1 SUM_VALUE_2
1 10 20
2 46 15
尝试这样做:
Select Client,
sum (Case When ID='1' THEN Value ELSE NULL END) as SUM_VALUE_1,
sum (Case When ID='2' THEN Value ELSE NULL END) as SUM_VALUE_2
FROM TABLE
GROUP BY Client
这是正确的方法还是应该以某种方式改变?
答案 0 :(得分:0)
如果您希望按客户端和ID对结果进行分组,则可以执行以下操作:
Select Client, ID, sum (value) as value
FROM TABLE
GROUP BY Client, ID
但如果您想要客户分组:
Select Client,sum(value) from (
Select Client, ID, sum (value) as value
FROM TABLE
GROUP BY Client, ID)
GROUP BY Client;
或
Select Client,sum(value)
from TABLE
GROUP BY Client;
答案 1 :(得分:0)
我想说避免使用0而不是使用0
Select Client,
sum (Case When ID='1' THEN Value ELSE 0 END) as SUM_VALUE_1,
sum (Case When ID='2' THEN Value ELSE 0 END) as SUM_VALUE_2
FROM TABLE
GROUP BY Client