我想知道是否可以构建一个T-SQL查询,它返回每月总销售额和每日平均销售额 - 包括当月的适当平均值。
我得到的最接近的是:
SELECT CONVERT(CHAR(7), salesdate, 120) as [Month],
SUM(SalesPrice) as [Totals],
Max(DAY(EOMONTH(salesdate))),
SUM(SalesPrice)/Max(DAY(EOMONTH(salesdate)))
FROM Sales
WHERE salesdate >= '1/1/2014'
GROUP BY CONVERT(CHAR(7), salesdate, 120)
ORDER BY [Month]
除了当前月份的每日平均值之外,其他一切都很好 - 因为我用来计算每日平均值(每月销售额的总和/当月的天数)的公式夸大了本月的销售天数(除非它在该月的最后一天运行)。
显然,这可以拼凑成一个单独的查询,但是有没有人有必要的T-SQL mojo来建议它如何作为单个查询工作?
答案 0 :(得分:1)
SELECT CONVERT(CHAR(7), salesdate, 120) as [Month]
,SUM(SalesPrice) as [Totals]
,Max(DAY(CASE WHEN (MONTH(salesdate) = MONTH(GETDATE()))
AND (YEAR(salesdate) = YEAR(GETDATE()))
THEN GETDATE()
ELSE EOMONTH(salesdate) END))
,SUM(SalesPrice)/Max(DAY( CASE WHEN (MONTH(salesdate) = MONTH(GETDATE()))
AND (YEAR(salesdate) = YEAR(GETDATE()))
THEN GETDATE()
ELSE EOMONTH(salesdate) END))
FROM Sales
WHERE salesdate >= '20140101' --<-- Use ANSI DATE format YYYYMMDD
GROUP BY CONVERT(CHAR(7), salesdate, 120)
ORDER BY [Month]