生成最近几个月的临时表

最近存储过程用到要显示最近几个月的数据,但是存储的数据可能不是每个月都有。因此需要事先生成一个最近几个月连续的表,然后与数据表左连接。

月份
2015-01
2015-02
2015-03
2015-04
2015-05

+

月份 数据
2015-01  234.1
2015-02  253.2
2015-03  243.4
2015-05  264.1

=

月份 数据
2015-01 234.1
2015-02 253.2
2015-03 243.4
2015-04 0
2015-05 264.1

创建临时表

CREATE TABLE #TEMP(MONTHDATA VARCHAR(7))
DECLARE @N INT = 5
WHILE @N>0
BEGIN
INSERT INTO #TEMP(MONTHDATA)SELECT CONVERT(VARCHAR(7),DATEADD(MM,0-@N+1,GETDATE()),120)
SET @N-=1 
END

获取月份连续的表

SELECT #TEMP.MONTHDATA,TB.VALUEDATA FROM #TEMP LEFT JOIN TB ON #TEMP.MONTHDATA=TB.MONTHDATA

最后记得Drop临时表

原文地址:https://www.cnblogs.com/ecosu/p/4482380.html