2017-08-08 98 views
1

我有一個帶有以下字段的表。在不同CASE條件下求和相同的字段

code quantity active 

1  23   true 
1  35   true 
1  25   false 
1  37   false 
2  30   true 
2  43   true 
2  43   false 
2  45   true 
3  49   false 
3  26   false 
3  30   true 
3  46   false 
3  46   false 
3  27   true 
4  42   false 
4  23   false 
4  48   true 
4  35   false 
4  45   true 

,我有以下查詢:

SELECT code, CASE WHEN active THEN COUNT(*) ELSE 0 END AS "activeCodes", 
CASE WHEN active=false THEN COUNT(*) ELSE 0 END AS "inactiveCodes" 
FROM tbl_codes 
GROUP BY code, active 
ORDER BY code 

和它的結果如下表:

code activeCodes inactiveCodes 

1  0    2 
1  2    0 
2  3    0 
2  0    1 
3  0    4 
3  2    0 
4  0    3 
4  2    0 

但我希望的是結果

code  activeCodes  inactiveCodes 

1  2     2 
2  3     1 
3  4     2 
4  2     3 

哪個條件是我m在這裏發佈?我怎麼能得到我預期的結果?

回答

0

您有一個稀疏矩陣,您可以通過運行SUM來摺疊。可能是這樣的事情(未測試):

SELECT code 
     ,SUM(CASE WHEN active THEN 1 ELSE 0 END) AS "activeCodes" 
     ,SUM(CASE WHEN active=false THEN 1 ELSE 0 END) AS "inactiveCodes" 
    FROM tbl_codes 
    GROUP BY code 
    ORDER BY code 
+0

是的,這是伎倆。非常感謝你。 –

相關問題