2013-03-15 21 views
7

私は同じテーブルから異なるwhere句で行を数える必要があります。以下は、各列には、独自の基準を持っているこれまでのところ、私は、次のSQLを持っていますが、それはすでに醜いとまさに私がOracle:異なる場所で複数のカウントを行うにはどうすればよいですか?

SELECT * FROM (
    SELECT 
    c_unit_code, 
    COUNT(*) AS ADVICE_EXPORT, 
    0 AS CONFIRMATION_EXPORT, 
    0 AS ISSUANCE_STANDBY 
    FROM EXIMTRX.EPLC_MASTER 
    WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE' OR 
    form_of_lc LIKE 'REVOCABLE' OR 
    form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR 
    form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'ADVICE' 
    GROUP BY c_unit_code 
UNION 
    SELECT 
    c_unit_code, 
    0 AS ADVICE_EXPORT, 
    COUNT(*) AS CONFIRMATION_EXPORT, 
    0 AS ISSUANCE_STANDBY 
    FROM EXIMTRX.EPLC_MASTER 
    WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE' OR 
    form_of_lc LIKE 'REVOCABLE' OR 
    form_of_lc LIKE 'IRREVOCABLE TRANSFERABLE' OR 
    form_of_lc LIKE 'REVOCABLE TRANSFERABLE') AND our_eng LIKE 'CONFIRMATION' 
    GROUP BY c_unit_code 
UNION 
    SELECT 
    c_unit_code, 
    0 AS ADVICE_EXPORT, 
    0 AS CONFIRMATION_EXPORT, 
    COUNT(*) AS ISSUANCE_STANDBY 
    FROM EXIMTRX.EPLC_MASTER 
    WHERE (CLS_FLG NOT LIKE 'YES' OR CLS_FLG IS NULL) AND (
    form_of_lc LIKE 'IRREVOCABLE STANDBY' OR 
    form_of_lc LIKE 'REVOCABLE STANDBY' OR 
    form_of_lc LIKE 'IRREVOC TRANS STANDBY') 
    GROUP BY c_unit_code 
); 

必要なものを返さない私から

Bu #A #B #C #D #E #F #G #H #J #K #L #M #N 
GB01 267 284 84 45 35 32 458 801 111 899 892 56 99 
NL01 132 844 65 28 26 12 627 321 56 681 1062 127 128 

必要な出力でありますこれが返すものです

GB01 0 0 17 
GB01 0 39 0 
GB01 80 0 0 
NL01 0 0 32 
NL01 0 159 0 
NL01 341 0 0 

私は何が必要なのですか?

+0

あなたが使用しているデータは何ですか? –

+1

完全一致にLIKEを使用してもよろしいですか?あなたは( 'IRREVOCABLE'、 'REVOCABLE'、 'IRREVOCABLE TRANSFERABLE')にform_of_lcが必要なようです –

答えて

11
SELECT 
    c_unit_code, 
    COUNT(case when YOUR_CONDITIONS_FOR_ADVICE_EXPORT then 1 end) AS ADVICE_EXPORT, 
    COUNT(case when YOUR_CONDITIONS_FOR_CONFIRMATION_EXPORT then 1 end) AS CONFIRMATION_EXPORT, 
    COUNT(case when YOUR_CONDITIONS_FOR_ISSUANCE_STANDBY then 1 end) AS ISSUANCE_STANDBY 
    FROM EXIMTRX.EPLC_MASTER 
    GROUP BY c_unit_code 
関連する問題