Sql server 2008 使用while循环以日期增量插入
我在一个表中有3列Sql server 2008 使用while循环以日期增量插入,sql-server-2008,Sql Server 2008,我在一个表中有3列Index\u tbldate,品牌和索引。品牌A的日期从2012年1月26日开始,品牌B的日期从2013年2月18日开始。现在,对于索引为“0”的“A”品牌,我必须在该表中插入2012年1月1日开始日期之前的所有日期的行。我如何一次性完成此操作。共有27个品牌,并且为每个日期编写一个插入这很麻烦 Declare @min_date set @min_date=select min(dt) from temp_tm_data_final_4 where brand=
Index\u tbl
date
,品牌
和索引
。品牌A的日期从2012年1月26日开始,品牌B的日期从2013年2月18日开始。现在,对于索引为“0”的“A”品牌,我必须在该表中插入2012年1月1日开始日期之前的所有日期的行。我如何一次性完成此操作。共有27个品牌,并且为每个日期编写一个插入
这很麻烦
Declare @min_date
set @min_date=select min(dt) from temp_tm_data_final_4 where brand='A'
while (min_date > 2012-01-01 00:00:00.000)
BEGIN
Insert into temp_tm_data_final_4
(date,brand,Index)
values
(dateadd(day,-1,@min_date),'A',0)
END
以下查询将满足您的要求:
Declare @min_date
set @min_date=select min(dt) from temp_tm_data_final_4 where brand='A'
;WITH CTE AS
(
SELECT DATEADD(day,-1,@min_date) Dates
UNION ALL
SELECT DATEADD(day,-1,Dates)
FROM CTE
WHERE DATEADD(day,-1,Dates) > '2012-01-01 00:00:00.000'
)
INSERT into temp_tm_data_final_4 (date,brand,Index)
SELECT Dates,'A',0
FROM CTE