2010-05-31 96 views
1

我有一個表獲取總和()結果在一個查詢在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 ... 

預期的結果是總結了NUM爲「中」,並在一個查詢「出來」,然後計算差值,像

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

感謝

回答

1

你想要的是GROUP BY(和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

太棒了!但要等6分鐘才能標記 – bxx 2010-05-31 02:09:07