生成最近几个月的临时表

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

月份
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临时表

时间: 2024-11-09 22:08:54

生成最近几个月的临时表的相关文章

选择生成日报表,月报表,年报表

传入参数: @Type:类型,是哪一种报表,有year,month,day三种 @Time:时间 根据Type参数分别获取Time的月份数据,日期数据 declare @Type nvarchar(20) ='month'; declare @Time DateTime =getdate(); SELECT distinct CASE WHEN @Type = 'quarter' THEN CONCAT(DATEPART(qq,DATEADD(qq,number,@Time)),'季度') WH

会计日历-自动生成脚本

--自动生成当前年份所有月的会计期间 --Parameters: --:YEAR  当前年份 --:TYPE  会计日历类型 SELECT INITCAP (TO_CHAR (TO_DATE (ROWNUM, 'MM'), 'MON')) PREFIX, :TYPE TYPE, :YEAR YEAR, TO_CHAR (TO_DATE (ROWNUM, 'MM'), 'q') QUARTER, ROWNUM NUM, ( :YEAR || '-' || ROWNUM || '-01') FROM

【System Log】7月14日—7月29日

本日志由系统自动生成. 从7月14日起便按照心想事成的节奏进入了实验室.打酱油.周末又去学活值班,生活的框架还是很不错的. 1.基于Hadoop的Flume,zooKeeper,这些东西算是明白了个大概. 2.第一周大概学习了javascript.jquery.css.ci框架(php)这些基本的东西,然后大概搭了个大创网站的架子出来. 3.第二周周末开始写android,答应别人要开发的一个小游戏,但是写着写着就觉得压力大写不出来. 4.中间还抽时间看了程杰的大话设计模式,和一些人ctf的wr

sqlserver临时表或表变量代替游标

在很多场合,用临时表或表变量也可以替代游标 临时表用在表没有标识列(int)的情况下. 在表有标识列(int)的情况下可以用表变量,当然也可以用临时表. 利用临时表或表变量的原因时,生成一个连续的列 对于临时表是使用 SELECT .... ,IDENTITY(int) NewID INTO #tmp SELECT ... FROM YourTable 对于YourTable含有标识列(比如字段名为ID)时,可以 INSERT @tmpTable SELECT ..., NewID=(SELEC

oracle sql生成临时递增数据

1.生成1至10记录 select rownum from dual connect by rownum <= 10 结果: 12345678910 2.生成最近12个月记录 select to_char(add_months(sysdate, rownum - 12), 'yyyyMM') time from dual connect by rownum <= 12 结果: 20180520180620180720180820180920181020181120181220190120190

深入Oracle的left join中on和where的区别详解

今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来,即: 日期                  交易次数   交易金额 2009-4-01           1              10 2009-4-02           2              20 2009-4-03           0              0 2009-4-04          5                50 一开始我用的左连接,用on做为两表关联条件,用wher

数据库sql的join多表

摘录文章 SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据.注意,join后的数据记录数不一定就是左或右表的简单连接,图表只代表集合关系,在数量上并不准确,如这个条件后结果,数量大于左表总数. 图解SQL Join 我认为 Ligaya Turmelle 关于 SQL Join 的文章是一篇非常棒的新手入门指南.由于 SQL Join 似乎被默认为基础,同时利用文氏图表来解释它,乍一看似乎是很自然的选择.然而,就像她的文章下面评论里说的,我也发现在实际测试中,文氏图并没

怎样查出SQLServer的性能瓶颈

--王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQLServe的性能调优不是一个精密的科学.即使是,对于为最佳的性能找到最佳的配置也是很困难的.这是因为对于调优来说很少东西是绝对的.例如,一个性能调优可能对某一方面有用,可是却会影响其他的性能. 我曾经做过DBA,在最后7年的日子里,我总结了一套SQLServer调优的清单.当第一次进行SQLServer性能调优的时候,可以用它来作为一

SQL语句整理1

//CASE 的用法,以及as SELECT CASE RegType WHEN 1 THEN '月卡' WHEN 0 THEN '周卡' WHEN 2 THEN '季度卡' WHEN 3 THEN '年卡' ELSE '未知卡类型' END AS '卡类型' FROM SL_Register_Info Left join用法 LEFT JOIN 关键字语法 SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table