データを選択して要約する必要がある 3 つのテーブルがあります。
Table: IDEA
REFERENCE SL
128 SL1
200 SL1
201 SL2
205 SL3
Table: ACCT1
IDEA_REF ACCTS
128 5
128 2
200 3
205 4
Table: ACCT2
IDEA_REF ACCTS
201 3
205 4
205 3
私がする必要があるのは、両方のテーブルの ACCTS フィールドからの合計で SL でソートされた要約を引き出すことです。
これまでに使用したSQLは次のとおりです。
SELECT I.SL AS SL, COUNT(DISTINCT I.REFERENCE) AS NO,
SUM(CASE WHEN A1.IDEA_REF=I.REFERENCE THEN A1.ACCTS ELSE 0 END) AS ACCT1,
SUM(CASE WHEN A2.IDEA_REF=I.REFERENCE THEN A2.ACCTS ELSE 0 END) AS ACCT2
FROM IDEA I
LEFT JOIN ACCT1 A1 ON A1.IDEA_REF=I.REFERENCE
LEFT JOIN ACCT2 A2 ON A2.IDEA_REF=I.REFERENCE
WHERE A2.IDEA_REF IN I.REFERENCE OR A1.IDEA_REF IN I.REFERENCE
GROUP BY I.SL
私が見つけている問題は、IDEA テーブルを参照して、ACCT1 および ACCT2 テーブルに複数の値がある場合です。このクエリの結果は次のとおりです。
SL NO ACCT1 ACCT2
SL1 2 10 0
SL2 1 0 3
SL3 1 8 7
SL3 行は、ACCT1 と ACCT2 の値を 2 回追加します。それらを適切な回数追加する正しい方法が見つからないようです。
望ましい出力は次のとおりです。
SL NO ACCT1 ACCT2
SL1 2 10 0
SL2 1 0 3
SL3 1 4 7
どんな助けでも大歓迎です。