简体   繁体   English

与SQL服务器求和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM