2017-05-26 14 views
0

私は以下の表を持っている:和(またはカウント)複数のcase文

Month | Item | Events | Party | Spirit | Faith | 
May | 123 | 1 | 1 | 0 | 0 | 
June |123 | 1 | 0 | 1 | 1 | 

それは基本的にありません0イエスのための1です。

Month | Item | Counts | 
May | 123 | 2 | 
June| 123 | 3 | 

これが動作しない:私は、私は次のような結果を必要とする各項目は、各月に

でどのように多くの異なるカテゴリー知っておく必要があります

select Month, Item, 
     sum(case when EVENTS = 1 then 1 when PARTY = 1 then 1 when SPIRIT = 1 then 1 when FAITH = 1 then 1 else 0 end) as Counts 
from TABLE 
group by 1,2 

助けてください、感謝を!

答えて

2

あなたは凝集を必要としない:

select Month, Item, 
     (events + party + spirit + faith) as counts 
from t; 
0
CREATE TABLE #T 
(
Month varchar(10), Item int, Events bit, Party bit, Spirit bit , Faith bit 
) 
insert into #T 
SELECT 'May' , 123 , 1 , 1 , 0 , 0 union 
SELECT 'June' ,123 , 1 , 0 , 1 , 1 

select Month, Item, CAST(Events AS INT) + CAST(Party AS INT)+ CAST(Spirit AS 
INT) +CAST(Faith AS INT) from #T 

集約が必要とされていません。イベント、パーティー、スピリット、信念はビット列なので、intにキャストして追加する必要があります。

+0

コードをより読みやすくするためにフォーマットしてください。なぜそれがうまくいくのかについての説明もあります –