我有下面的代码,其中它目前给出了本年度每月的总销售额,我需要得到总销售额从上一年的最后一个月到今年的本月。
我的问题如下:
;WITH mcte AS (
SELECT DATEADD(year, -1, getdate()) as MONTH_NAME
UNION ALL
SELECT DATEADD(MONTH,1,MONTH_NAME)
FROM mcte
WHERE DATEPART(MONTH,MONTH_NAME) < 12),octe AS(
SELECT (DATENAME (MONTH, DATEADD ( MONTH, DATEPART(MONTH, OI.CreatedDate), -1) )) AS MONTH_NAME,
SUM (OI.ItemQty * OI.TotalPrice) AS TOTAL_SALES
FROM Order_Item OI
GROUP BY MONTH(OI.CreatedDate))
SELECT DATENAME(MONTH,m.MONTH_NAME) + '' + DATENAME(YEAR,m.MONTH_NAME) as
MONTH_NAME, o.TOTAL_SALES FROM mcte m LEFT JOIN octe o ON o.MONTH_NAME = DATENAME(MONTH,m.MONTH_NAME)
我也有记录了
MONTH_NAME TOTAL_SALES
July2019 54023.45
August2019 NULL
December2019 NULL
September2019 NULL
October2019 NULL
November2019 NULL
这里我只获取上一年的数据,不获取本年的数据。有人能给我提供指导吗。
谢谢您
2条答案
按热度按时间zlhcx6iw1#
尝试这样做:
8yoxcaq72#
您最多只能生成12个月。尝试将第一个cte替换为:
注意区别在于
WHERE
条款。整个查询应如下所示: