2017-09-21 1 views
0

Comment faire pour regrouper plusieurs lignes sur une seule ligne avec plusieurs colonnes comme la table B?Combinaison de lignes basée sur COUNT et création de plusieurs colonnes

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 

J'utilise cette requête:

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 

et apporte ce résultat:

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

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

Répondre

1

Ne pas utiliser la COUNT() - utiliser à la place SUM(), comme ceci:

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

Merci. c'était la réponse. travaille maintenant – Mike