簡體   English   中英

與SQL服務器求和值

[英]sum values with sql server

我有下表測試

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

如何獲得以下結果

Actual     Budget     CA     
20        130         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 

該查詢未返回我要查找的內容,該如何修改?

將您的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)

如果您希望通過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

像這樣:

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