SQL 2008-如果日期不存在,则插入到表中



嗨,我如何制作下面的脚本来插入工作。首先要检查表是否存在,如果是,则仅插入表中,如果日期范围不在表中,则我只想插入表中。否则,请选择进入表格。

DECLARE @date1 datetime
DECLARE @date2 datetime
DECLARE @dailyEnd1 varchar(12)
DECLARE @dailyEnd2 varchar(12)
DECLARE @column varchar(100)
DECLARE @Script varchar(8000)
SET @date1 = '09 jan 2012'
SET @date2 = '15 jan 2012'
SET @dailyEnd1 = @date1
SET @dailyEnd2 = @date2
IF OBJECT_ID('tempdb..#table1') is not null
    BEGIN   
        IF NOT EXIST (SELECT MinDate, MaxDate FROM #table1
            WHERE MinDate = '02 Jan 2012' AND MaxDate = '08 jan 2012'
            GROUP BY MinDate, MaxDate)
            BEGIN
                INSERT INTO #table1 (MinDate, MaxDate, [Week], OutletID, OutletName, Transactions, Spend)
                SELECT min(dailyEnd-1), max(dailyEnd-1), 
                convert(varchar(12),Min(dailyEnd-1), 104)+'-'+convert(varchar(12),MAX(dailyEnd-1),104), 
                OutletID, OutletName, 
                sum(Transactions), sum(Sales)
                FROM #table2 (NOLOCK)
                WHERE dailyEnd-1 >= @dailyEnd1
                AND dailyEND-1 <= @dailyEnd2
                GROUP BY OutletID, OutletName
            END
    END
ELSE
    BEGIN
    SELECT min(dailyEnd-1) as MinDate, max(dailyEnd-1) as MaxDate, 
    convert(varchar(12),Min(dailyEnd-1), 104)+'-'+convert(varchar(12),MAX(dailyEnd-1),104) as [Week], OutletID, OutletName, sum(Transactions) as Transactions, sum(Sales) as Spend
    INTO #table1
    FROM #table2 (NOLOCK)
    WHERE dailyEnd-1 >= @dailyEnd1
    AND dailyEND-1 <= @dailyEnd2
    GROUP BY OutletID, OutletName
    END

感谢

NOT EXISTS子句下移到INSERT之后的WHERE中。

也就是说,只在日期范围的NOT EXISTS处插入。

最新更新