2010-05-31 7 views
1

J'ai une tableObtenez somme() résultat dans une requête Mysql

id name state num 
1 x in 10 
2 x out 1 
3 x in 5 
4 x out 2 
5 y ... 
6 y ... 

Le résultat attendu est de résumer le num pour « in » et « out » dans une requête, puis calculer la différence, comme

name numin numout diff 
x 15 3  12 
y .... 

Merci

Répondre

1

Qu'est-ce que vous voulez est GROUP BY (et la déclaration CASE):

SELECT 
    name, 
    SUM(CASE WHEN state='in' THEN num ELSE 0 END CASE) AS numin, 
    SUM(CASE WHEN state='out' THEN num ELSE 0 END CASE) AS numout, 
    SUM(CASE WHEN state='in' THEN num ELSE -1*num END CASE) AS diff 
FROM 
    table 
GROUP BY 
    name 
+0

Impressionnant! Mais il faut attendre 6 minutes pour marquer – bxx

Questions connexes