Sql server 要在脚本中使用的日期列表

Sql server 要在脚本中使用的日期列表,sql-server,Sql Server,是否可以定义一个日期列表(例如:19122016、261220016、01012017、08012017),其中每个日期组合(如:[19122016、08012017])将被选择为“第一个日期”和“第二个日期”以执行脚本 declare @last_date varchar(10), @previous_date varchar(10), @sql varchar(max); set @last_date ='20170115'; set @previous_date = '20170108';

是否可以定义一个日期列表(例如:19122016、261220016、01012017、08012017),其中每个日期组合(如:[19122016、08012017])将被选择为“第一个日期”和“第二个日期”以执行脚本

declare @last_date varchar(10), @previous_date varchar(10), @sql varchar(max);
set @last_date ='20170115';
set @previous_date = '20170108';
set @sql = 'select *
into umkp.dbp.rosk_'+@last_date+'_seg
from umkp.dbp.rosk_'+@previous_date+'_seg'

结果将创建一个选项卡列表。

创建一个表或表变量来保存日期对。然后使用该表为表中的每一行创建select into语句

DECLARE @dates TABLE(last_date varchar(10), previous_date varchar(10));
INSERT @dates
        ( last_date, previous_date )
VALUES  ( '19122016', '08012017' ),
        ( '26122016', '01012017' );

select 'select *
    into umkp.dbp.rosk_'+last_date+'_seg
    from umkp.dbp.rosk_'+previous_date+'_seg'
FROM @dates;

为什么要这样做而不是简单地对表进行分区?或者至少对所有表使用
UNION
查询?只有在日期表上存在约束时,优化器才会扫描正确的表。但是分区要容易得多。它在2016 SP1()的所有版本中都可用实际上,我不需要表分区。我有一些日期(以它们的名称)数据库,这将是脚本生成新表的源代码,根据每个日期范围的组合进行计算。对不起,也许我不明白你的意思,我是sql server的初学者:(我不清楚你的要求是什么-你似乎在克隆表。还有,你是如何得到[19122016,08012017]的组合(配对?)为什么不把这个组合带到你的查询中呢?脚本很大,放在这里占用了你的时间,所以我放了一部分。主要问题是,在一个脚本中,我多次使用不同的表名,将日期作为源或输出。每次更改日期并再次运行脚本并不方便,因为它接近72 date p在一个范围内的点。它只返回2行,其中带有“select*into umkp.dbo.rosk\U sas\U crm\U scoring\U vector\U 15012017\U seg\U base from umkp.dbo.sas\U crm\U scoring\U vector\U 08012017\U seg\U base”值。我可以添加一些内容来创建两个表吗?对于
@dates
表变量中的每一行,根据最后一个日期列,将有一个包含目标表的结果行。您需要将所有日期插入
@dates
表变量是,但我不知道如何实现。例如,使用局部变量在bles中,我们可以更改创建新表的脚本:[声明last_date varchar(10)、previous_date varchar(10)、sql varchar(max)、sql some varchar(max);设置last_date='20170122';设置previous_date='20170108';设置sql='select*到[UMKP].[dbo].sas_vector'+last_date+'pd_portf'final_dep from[UMKP].[dbo].sas_vector'+上一个_日期+”最终_dep';执行官(sql)]