更新时间:2022-05-03 04:35:55
尝试使用 CASE [ ^ ]声明。
这里是一个样本
Try using CASE[^] statement.
here is a sample
SELECT dg.DestinationGroupName AS Destination, c.CarrierShortName AS Carrier,
SUBSTRING(CONVERT(VARCHAR(11), ba.CDRDate, 106), 4, LEN(CONVERT(VARCHAR(11),ba.CDRDate, 106))) AS Month,
CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(ba.TotalDuration) / 60
ELSE SUM(ba.TotalDuration) / 60 * 31 END AS DurationInMinutes,
CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(ba.TotalCost)
ELSE SUM(ba.TotalCost) / 31 END AS TotalRevenue,
CASE WHEN DatePart(ba.CDRDate) = DatePart(getdate()) THEN SUM(av.AvgCost * ba.TotalDuration)
ELSE SUM(av.AvgCost * ba.TotalDuration) / 31 END AS TotalCost,
SUM(ba.TotalCost) - SUM(av.AvgCost * ba.TotalDuration) AS Margin
FROM --....
自您正在使用聚合函数,您还需要使用 GROUP BY(Transact-SQL) [ ^ ]