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