我有表名为:SQL选择具有月份名称表,从日期范围
Posts_August_2011
Posts_September_2011
Posts_October_2011
Posts_November_2011
Posts_December_2011
Posts_January_2012
我想创建存储过程,它会UNION
表,但是这不是问题,因为我可以使用动态SQL胶水我的问题是从RANGE到几个月份的月份和年份范围?然后检查表是否存在,联合它们并返回。
我将宣布2个变量@FromDate
和@Todate as datetime
什么是提取月份名称和年份对每个在给定范围内的几个月的最佳途径。
说我给它一个范围@FromDate = '2011-10-18 14:16:27.000' and @ToDate = '2012-01-09 14:16:27.000'
可以有人建议如何提取月份和年份。
DECLARE @SqlToExecute as nvarchar(MAX);
使用dinamyc SQL是可接受的,它可以在while循环和 胶检查表中的存在于字符串中存在的范围内的每个表:
@SqlToExecute += 'SELECT * FROM Posts_' + extractedMonthName + '_' + extractedYear + ' UNION ALL ';
它被设计成自定义分区和更容易管理的方式。 – formatc 2012-01-14 12:01:55
正是我在找什么,谢谢我只是做了一些调整,你最后选择是选择LITERAL像第一个结果在返回的表是:SELECT * FROM foo UNION ALL ..我补充说: SET @FinalToExec = SUBSTRING(@ SqlToExecute,1,LEN(@SqlToExecute)-10) DROP TABLE#Posts1 EXEC(@FinalToExec) – formatc 2012-01-14 12:48:05
@ user1010609谢谢你的回复。我很高兴我能帮助你。 – 2012-01-14 15:21:57