最近存储过程用到要显示最近几个月的数据,但是存储的数据可能不是每个月都有。因此需要事先生成一个最近几个月连续的表,然后与数据表左连接。
月份 |
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临时表