使用while循环插入日期增量

时间:2014-06-13 11:17:39

标签: sql-server-2008

我在表Index_tbl datebrandIndex中有3列。日期从26/1/2012开始,品牌A和18/2 / 2013 for Brand B.Now我必须在2012年1月1日开始日期之前的所有日期为“A”品牌插入行,索引为“0”。如何一次性完成此操作。有27个品牌,每个日期写一个insert是很麻烦的。

 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

1 个答案:

答案 0 :(得分:0)

以下查询将满足您的要求:

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