2011-08-30 34 views
9

में सशर्त सारांश मेरे पास transactions तालिका है जिसमें एक श्रेणी (category_id), एक राशि (amount) और एक ध्वज (managed) है जो सत्य या गलत हो सकता है।PostgreSQL

मैं प्रबंधित की कुल मात्रा और प्रबंधित लेनदेन के साथ सभी श्रेणियों की एक सूची प्रदर्शित करना चाहता हूं, उदा।

Category | managed_transactions | unmanaged_transactions 
Cat 1 |  124000   |  54000 
Cat 2 |  4000    |  0 
Cat 3 |  854000   |  1000000 

वहाँ

कुछ की तरह
Select category_id, 
     sum(amount) if (managed is true) as managed_transactions, 
     sum(amount) if (managed is false) as unmanaged_transactions 
from transactions 

मैं स्पष्ट रूप से if managed is true भाग पर अटक कर रहा हूँ करने के लिए एक रास्ता है ...

उत्तर

21

का आनंद लें!

SELECT 
    category_id, 
    SUM(CASE WHEN managed THEN amount ELSE  0 END) AS managed_transactions, 
    SUM(CASE WHEN managed THEN  0 ELSE amount END) AS unmanaged_transactions 
FROM 
    transactions 
GROUP BY 
    category_id 
ORDER BY 
    category_id 
+0

आह! धन्यवाद, मैंने प्रबंधित राशि (राशि) अंत 'की स्थिति में कोशिश की थी, लेकिन यह दूसरा रास्ता था: ओ) – Pierre