0
我有這個疑問困惑加入和GROUP BY
SELECT (T1.FirstDayOfMonth
, T1.VehicleType
, SUM(T1.Cost-T2.Cost)
)
FROM (SELECT FirstDayOfMonth
, VehicleType
, [Cost] = Cost*Rate
FROM fnCalculationData(@CalculationId1)
GROUP BY FirstDayOfMonth, VehicleType
) AS T1
LEFT JOIN (SELECT FirstDayOfMonth
, VehicleType
, [Cost] = Cost*Rate
FROM fnCalculationData(@CalculationId2)
GROUP BY FirstDayOfMonth, VehicleType
) AS T2 ON T1.VehicleType = T2.VehicleType
GROUP BY T1.FirstDayOfMonth, T1.VehicleType
但我意識到我可能需要以後篩選我的結果在另一個領域,RegistrationTypeId
,所以我把它添加到我的選擇:
SELECT (T1.FirstDayOfMonth
, T1.VehicleType
, T1.RegistrationTypeId
, SUM(T1.Cost - T2.Cost)
)
FROM (SELECT FirstDayOfMonth
, VehicleType
, RegistrationTypeId
, [Cost] = Cost*Rate
FROM fnCalculationData(@CalculationId1)
GROUP BY FirstDayOfMonth, VehicleType, RegistrationTypeId
) AS T1 LEFT JOIN (SELECT FirstDayOfMonth
, VehicleType
, RegistrationTypeId
, [Cost] = Cost*Rate
FROM fnCalculationData(@CalculationId2)
GROUP BY FirstDayOfMonth, VehicleType, RegistrationTypeId
) AS T2 ON T1.VehicleType = T2.VehicleType
GROUP BY T1.FirstDayOfMonth, T1.VehicleType, T1.RegistrationTypeId
但是這會給我錯誤的成本價值(即使我不包括RegistrationTypeId
在我的主要SELECT
s GROUP BY
)它改變了我的子選擇的行數,結果是錯誤的。
如何在不影響成本計算的情況下返回此字段?
示例數據請與您所得到的和您的期望。 – wast
您正在使用哪種SQL Server版本?似乎你需要同時收集和詳細的信息,而窗口功能可以在這裏完成工作。當然也可以進行次選。 –
爲什麼所有括號? – JohnHC