SQL 2008 - вставить в таблицу, если дата еще не существует - PullRequest
0 голосов
/ 14 марта 2012

Привет, как я могу сделать следующий скрипт для вставки работы. Сначала проверьте, существует ли таблица, если да, вставьте только в таблицу, и я хочу вставить ее только в том случае, если диапазон дат еще не указан в таблице. В противном случае выберите в таблице.

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

Спасибо

1 Ответ

0 голосов
/ 14 марта 2012

Переместите ваше предложение NOT EXISTS вниз в WHERE после вашего INSERT.

Значение, только вставьте где NOT EXISTS для диапазона дат.

...