2017-09-21 15 views
0

表Bのような複数の列を使用して複数の行を1行にロールアップするにはどうすればよいですか?COUNTに基づいて行を結合し、複数の列を作成する

Table A 

Partyid Origin 
1  Atm 
1  Auto 
1  Mobile 
1  mobile 

Table B 

Partyid    COUNT (atm) COUNT (auto) COUNT (mobile) 
1      1    1    2 

私はこのクエリを使用:

SELECT partyid, 
CASE WHEN origin = 'atm' THEN COUNT (origin) ELSE '0' END AS N_ATM, 
CASE WHEN origin = 'auto' THEN COUNT (origin) ELSE '0' END AS N_auto, 
CASE WHEN origin = 'mobile' THEN COUNT (origin) ELSE '0' END AS N_Mobile, 

FROM XXX 
GROUP BY partyid 

をし、この結果をもたらします:

Partyid COUNT (atm) COUNT (auto) COUNT (mobile) 

1   1   0    0 
1   0   1    0 
1   0   0    2 

答えて

1

COUNT()を使用しないでください - このように、代わりにSUM()を使用します。

SELECT partyid, 
    SUM(CASE 
     WHEN origin = 'atm' THEN 1 ELSE 0 
     END) AS N_ATM, 
    SUM(CASE 
     WHEN origin = 'auto' THEN 1 ELSE 0 
     END) AS N_auto, 
    SUM(CASE 
     WHEN origin = 'mobile' THEN 1 ELSE 0 
     END) AS N_Mobile 
FROM XXX 
GROUP BY partyid 
+0

をありがとう。それは答えでした。今働いている – Mike

関連する問題