2017-08-08 11 views
1

次のフィールドを持つテーブルがあります。SUM異なる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 

どのような状態ですか?ここにいる?私は期待した結果をどのように得ることができますか?

答えて

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

うん、それはトリックでした。どうもありがとうございました。 –

関連する問題