我是一個完整的新手與SQL和有兩個查詢到我想要的結果,但我認爲我沒有正確使用UNION
來組合它們。我早些時候在這個網站上獲得了一些查詢的幫助。 下面是我所擁有的簡短版本。SQL聯盟與CTE和總和
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
自身運行第二個查詢,這裏是我得到的樣本數據的一個例子:
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
對不起,我試圖做一些它的短,嘎吱嘎吱一些東西。我改變了一點,希望它更易讀。 – jackirons
你最好把問題縮減到最短的例子。沒有人想要閱讀所有這些。 –