2012-03-14 2 views
0

안녕하세요. 다음 스크립트를 삽입하여 작업을 삽입하려면 어떻게해야합니까? 먼저 표가 존재하는 경우 표가 존재하는지 확인한 다음 표에만 삽입하십시오. 표가 아직 표에없는 경우 표에 삽입하고 싶습니다. 그렇지 않으면 테이블을 선택하십시오.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 

감사

+0

'존재하지 않는다면'존재하는 날짜를 확인해 보면'MinDate'와'MaxDate'의 값을 하드 코딩 했습니까? – Tony

답변

0
INSERT 후 아래 WHERENOT EXISTS 절을 이동

.

의미, 삽입 할 경우에만 날짜 범위에 대해 NOT EXISTS입니다.

관련 문제