UNION
私はSQLの完全な初心者であり、必要な結果まで2つのクエリを持っていますが、それらを組み合わせるために正しく使用していないと思います。クエリの一部について、以前にこのサイトでいくつかの助けがありました。以下は、私が持っているものの短縮版です。
WITH RemoveData
AS (SELECT a.PLANT_NO,
a.ALLOC_WHDV_VOL,
a.KW_CTR_REDELIVERED_HV,
a.MTR_NO,
a.MTR_SFX,
a.TRNX_ID,
a.REC_STATUS_CD,
MAX(a.ACCT_DT) ACCT_DT
FROM GasStmt a
INNER JOIN SettleSum c
ON a .= c.TRNX_ID
AND a.MTR_NO
||a.MTR_SFX = c.MTR_NO
||c.MTR_SFX
LEFT OUTER JOIN FuelsCat d
ON a.TRNX_ID = d.TRNX_ID
AND a.MTR_NO
||a.MTR_SFX = d.MTR_NO
||d.MTR_SFX
WHERE a.REC_STATUS_CD = 'RR'
GROUP BY a.PLANT_NO,
a.ALLOC_WHDV_VOL,
a.KW_CTR_REDELIVERED_HV,
a.MTR_NO,
a.MTR_SFX,
a.TRNX_ID,
a.REC_STATUS_CD
HAVING COUNT(a.REC_STATUS_CD) > 2)
SELECT plant_no "PlantNumber",
SUM(-a.ALLOC_WHDV_VOL) "PlantStandardGrossWellheadMcf",
SUM(KW_CTR_REDELIVERED_HV) "KeepWholeResidueMMBtu"
FROM RemoveData a
GROUP BY plant_no
UNION
SELECT a.PLANT_NO "PlantNumber",
SUM(a.ALLOC_WHDV_VOL) "PlantStandardGrossWellheadMcf",
SUM(CASE
WHEN a.REC_STATUS_CD = 'RR' THEN -a.KW_CTR_REDELIVERED_HV
ELSE a.KW_CTR_REDELIVERED_HV
END) "KeepWholeResidueMMBtu"
FROM GasStmt a
INNER JOIN SettleSum c
ON a.TRNX_ID = c.TRNX_ID
AND a.MTR_NO
||a.MTR_SFX = c.MTR_NO
||c.MTR_SFX
LEFT OUTER JOIN FuelsCat d
ON a.TRNX_ID = d.TRNX_ID
AND a.MTR_NO
||a.MTR_SFX = d.MTR_NO
||d.MTR_SFX
LEFT OUTER JOIN (SELECT MTR_NO,
MTR_SFX,
TRNX_ID,
REC_STATUS_CD,
MAX(ACCT_DT) ACCT_DT
FROM GasStmt
WHERE REC_STATUS_CD = 'RR'
GROUP BY MTR_NO,
MTR_SFX,
TRNX_ID,
REC_STATUS_CD
HAVING COUNT(TRNX_ID) > 1) b
ON a.MTR_NO = b.MTR_NO
AND a.TRNX_ID = b.TRNX_ID
AND a.Rec_Status_Cd = b.REC_STATUS_CD
AND a.Acct_Dt = b.ACCT_DT
WHERE TO_CHAR(a.PROD_DT, 'YYYY') >= TO_CHAR(ADD_MONTHS(SYSDATE, -36), 'YYYY')
AND a.STATUS_UNIT_TM_CD = 'M'
AND b.MTR_NO IS NULL
GROUP BY a.PLANT_NO
上記のクエリは次を返します。
PlantNumber | PlantStandardGrossWellheadMcf |KeepWholeResidueMMBtu
2 | 0 | -3.96
2 | 80 | 100
43 | 150 | 0
133 | 75 | 0
CTE だけで最初のクエリを実行すると、次のようになります。
PlantNumber | PlantStandardGrossWellheadMcf |KeepWholeResidueMMBtu
2 | 0 |-3.96
2 番目のクエリを単独で実行して、取得したサンプル データの例を次に示します。
PlantNumber | PlantStandardGrossWellheadMcf |KeepWholeResidueMMBtu
2 | 80 | 100
43 | 150 | 0
133 | 75 | 0
私の意図した結果は、植物番号に基づいてデータを結合することです。それはUNIONで行うことができますか、それとも何か間違っていますか? これは私が達成したいと思っていることです:
PlantNumber | PlantStandardGrossWellheadMcf |KeepWholeResidueMMBtu
2 | 80 | 96.04
43 | 150 | 0
133 | 75 | 0