在当月之前返回数据

时间:2015-11-26 11:03:46

标签: sql sql-server-2008

以下代码返回11个表中的数据。每个表都包含年份和月份。我需要使用enddate参数来检查是否只提取了表todate。因此,如果用户想要201505的数据,它应该 假设我们在201510个月,从2015年10月开始,所有表格仅截至201509年。表格如下:

<select>

2 个答案:

答案 0 :(得分:0)

您可以从INFORMATION_SCHEMA.TABLES获取所有表名。因此,只需应用您的标准即可获得它们:

select table_name
from information_schema.tables
where table_type = 'BASE TABLE'
and table_name like 'xx\_______\_T' escape '\'  
and table_name >= 'xx_' + CAST(@FirstTableMonth as varchar) + '_T';

SQL小提琴:http://www.sqlfiddle.com/#!6/7b4f5/2

答案 1 :(得分:0)

我已经发布了一个解释如何检索表名的答案。

但改变设计真的会更好。使它成为一个表并创建几个月的视图(命名为表现在命名)。使用替代插入触发器提供视图,因此您可以像以前一样使用select,update,insert和delete,但是您还可以使用适当的表:

select * from xx_all_t where month >= @FirstTableMonth;