[英]sum values with sql server
I have the following table test 我有下表测试
id Actual Budget CA RUB_ID
-------------------------------------------
1 20 30 201 902
1 2 330 202 902
1 220 130 207 90
1 21 30 20 12
How can get the following result 如何获得以下结果
Actual Budget CA
20 130 12
I need to do sum Actual if RUB_ID =902 , sum Budget if RUB_ID =90 ,sum CA if RUB_ID =12 我需要对RUB_ID = 902进行实际汇总,如果RUB_ID = 90对预算进行汇总,如果RUB_ID = 12对CA进行汇总。
select
id,
case
when RUB_ID = 902 then sum(Actual) AS Actual
else case
when RUB_ID = 90
then sum(Budget) as Budget
else case
when RUB_ID = 12 then sum(CA) as CA
FROM
TEST
group by
id
The query does not return what I am looking for , how can I modify it ? 该查询未返回我要查找的内容,该如何修改?
Put your case statements inside the sum functions 将您的case语句放入sum函数中
select
sum(case when RUB_ID = 902 then Actual else 0 end) Actual,
sum(case when RUB_ID = 90 then Budget else 0 end) Budget,
sum(case when RUB_ID = 12 then CA else 0 end) CA
from test where RUB_ID IN (902,90,12)
if you want these results by id 如果您希望通过ID获得这些结果
select
id,
sum(case when RUB_ID = 902 then Actual else 0 end) Actual,
sum(case when RUB_ID = 90 then Budget else 0 end) Budget,
sum(case when RUB_ID = 12 then CA else 0 end) CA
from test where RUB_ID IN (902,90,12)
group by id
Something like this: 像这样:
SELECT
id
, SUM(CASE RUB_ID WHEN 902 THEN Actual ELSE 0 END) as Actual
, SUM(CASE RUB_ID WHEN 90 THEN Budget ELSE 0 END) as Budget
, SUM(CASE RUB_ID WHEN 12 THEN CA ELSE 0 END) as CA
FROM TEST
GROUP BY id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.