【发布时间】:2014-01-24 00:38:35
【问题描述】:
我有一个想要更改的 SQL 查询,但我担心我的 SQL foo 不够好,无法解决这个问题。
所以,我有以下查询..
DECLARE @OldestSettlementDate DATETIME;
DECLARE @NewestSettlementDate DATETIME;
SET @OldestSettlementDate = '2014-01-05 12:00';
SET @NewestSettlementDate = '2014-01-05 12:00';
SELECT SETTLEMENTDATE, REGIONID, FUEL_TYPE, SUM(SCADAVALUE) AS TOTAL_GENERATION
FROM
(SELECT SCADA.SETTLEMENTDATE, DETAIL.REGIONID, COALESCE(FUEL.AEMO_FUEL_TYPE, 'Other') AS FUEL_TYPE, SCADA.SCADAVALUE
FROM DISPATCH_UNIT_SCADA AS SCADA
LEFT JOIN GR_DUID_TO_FUEL_TYPE AS FUEL ON FUEL.DUID = SCADA.DUID
LEFT JOIN DUDETAILSUMMARY AS DETAIL ON DETAIL.DUID = SCADA.DUID
AND SCADA.SETTLEMENTDATE BETWEEN DETAIL.START_DATE AND DETAIL.END_DATE
WHERE SCADA.SETTLEMENTDATE BETWEEN @OldestSettlementDate AND @NewestSettlementDate)
AS X
GROUP BY SETTLEMENTDATE, REGIONID, FUEL_TYPE
ORDER BY SETTLEMENTDATE DESC, REGIONID, FUEL_TYPE
目前它正在返回这样的结果..
SETTLEMENTDATE REGIONID FUEL_TYPE TOTAL_GENERATION
2014-01-05 12:00:00.000 NSW1 Black Coal 5593.876490
2014-01-05 12:00:00.000 NSW1 Hydro 115.674860
2014-01-05 12:00:00.000 NSW1 Liquid Fuel 0.000000
2014-01-05 12:00:00.000 NSW1 Natural Gas 475.541690
2014-01-05 12:00:00.000 NSW1 Other 152.471500
2014-01-05 12:00:00.000 NSW1 Wind 153.175650
2014-01-05 12:00:00.000 QLD1 Black Coal 5176.610039
2014-01-05 12:00:00.000 QLD1 Hydro 40.795000
2014-01-05 12:00:00.000 QLD1 Liquid Fuel 0.000000
2014-01-05 12:00:00.000 QLD1 Natural Gas 1402.728840
2014-01-05 12:00:00.000 QLD1 Other 51.254405
2014-01-05 12:00:00.000 SA1 Brown Coal 274.644050
2014-01-05 12:00:00.000 SA1 Liquid Fuel 0.000000
2014-01-05 12:00:00.000 SA1 Natural Gas 365.815960
2014-01-05 12:00:00.000 SA1 Other 82.600000
2014-01-05 12:00:00.000 SA1 Wind 968.568336
问题是,我希望在每个结算日期和地区都显示所有燃料类型。例如,Brown Coal 应该出现在 NSW1 中,总代数为 0。
2014-01-05 12:00:00.000 NSW1 Brown Coal 0.000000
我知道我可能必须加入以下子查询,但我不确定它如何适合上述查询。
SELECT DISTINCT AEMO_FUEL_TYPE AS FUEL_TYPE
FROM GR_DUID_TO_FUEL_TYPE
谢谢。
【问题讨论】:
-
相当不幸的串联:“DUDETAILSUMMARY”
-
哈哈。是的,这不是我们的数据库模式。我们只需要在我们的软件中使用它。
标签: sql sql-server join subquery