2013-02-13 2 views
0

용량 테이블을 만들기 위해 다른 테이블에서 정보를 가져 오기 위해이 sql을 생성했음을 알기 때문에 t-sql 문자열에 오류 메시지가 표시되는 이유를 찾는 데 어려움을 겪고 있습니다. , 그러나 뭔가 옳지 않아 나는 그것이 무엇인지 알아낼 수 없습니다. 도울 수 있니. 미리 감사드립니다.T-SQL 및 사례 명세서

오류 메시지 :

Msg 206, Level 16, State 2, Line 32 
Operand type clash: int is incompatible with date 

SQL 스크립트 : 당신은 열로 각 값을 넣어되는 이동 값 지정하지 않고 Capacity2 테이블에 삽입하는

DECLARE @PitchType_Skey INT 
DECLARE @Site_Skey INT 
DECLARE @Capacity INT 
DECLARE @StartDate DATE 
DECLARE @EndDate DATE 

SET @PitchType_Skey = 1 
SET @Site_Skey = 1 
SET @Capacity = 0 


WHILE (@Site_Skey < 127) 

BEGIN 
    IF @PitchType_Skey = 8 

    BEGIN 

    SET @PitchType_Skey = 1 
    SET @Site_Skey = @Site_Skey + 1 

    END 

    IF (@Site_Skey < 127) 

    BEGIN 

    Set @Capacity = (SELECT SiteWeighting From Site Where Site_Skey = @Site_Skey) 
    Set @Capacity = @Capacity * (SELECT PitchTypeWeighting From PitchType Where PitchType_Skey = @PitchType_Skey) 
    Set @Capacity = @Capacity * ((10*(100+((RAND()*40)-20)))*0.01) 

    INSERT INTO Capacity2 
    SELECT 
     CASE 
     WHEN YEAR(@StartDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2010' 
     WHEN YEAR(@StartDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2011' 
     WHEN YEAR(@StartDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2012' 
     WHEN YEAR(@StartDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2013' 
     WHEN YEAR(@StartDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2014' 
     WHEN YEAR(@StartDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '01 May 2015' 

     WHEN YEAR(@StartDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '1 Apr 2010' 
     WHEN YEAR(@StartDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '25 Mar 2011' 
     WHEN YEAR(@StartDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '10 Mar 2012' 
     WHEN YEAR(@StartDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '01 Apr 2013' 
     WHEN YEAR(@StartDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '01 Mar 2014' 
     WHEN YEAR(@StartDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '15 Mar 2015' 

     WHEN YEAR(@StartDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '1 Apr 2010' 
     WHEN YEAR(@StartDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '25 Mar 2011' 
     WHEN YEAR(@StartDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '10 Mar 2012' 
     WHEN YEAR(@StartDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '01 Apr 2013' 
     WHEN YEAR(@StartDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '01 Mar 2014' 
     WHEN YEAR(@StartDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '15 Mar 2015' 

     WHEN YEAR(@StartDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2010' 
     WHEN YEAR(@StartDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2011' 
     WHEN YEAR(@StartDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2012' 
     WHEN YEAR(@StartDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2013' 
     WHEN YEAR(@StartDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2014' 
     WHEN YEAR(@StartDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '01 Jan 2015' 

     ELSE NULL 
     END as StartDate, 

     CASE 
     WHEN YEAR(@EndDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2010' 
     WHEN YEAR(@EndDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2011' 
     WHEN YEAR(@EndDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2012' 
     WHEN YEAR(@EndDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2013' 
     WHEN YEAR(@EndDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2014' 
     WHEN YEAR(@EndDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 1 THEN '30 Sep 2015' 

     WHEN YEAR(@EndDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '01 Nov 2010' 
     WHEN YEAR(@EndDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '05 Nov 2011' 
     WHEN YEAR(@EndDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '02 Nov 2012' 
     WHEN YEAR(@EndDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '08 Nov 2013' 
     WHEN YEAR(@EndDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '01 Nov 2014' 
     WHEN YEAR(@EndDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 2 THEN '03 Nov 2015' 

     WHEN YEAR(@EndDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '01 Nov 2010' 
     WHEN YEAR(@EndDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '05 Nov 2011' 
     WHEN YEAR(@EndDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '02 Nov 2012' 
     WHEN YEAR(@EndDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '08 Nov 2013' 
     WHEN YEAR(@EndDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '01 Nov 2014' 
     WHEN YEAR(@EndDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 3 THEN '03 Nov 2015' 

     WHEN YEAR(@EndDate) = 2010 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2010' 
     WHEN YEAR(@EndDate) = 2011 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2011' 
     WHEN YEAR(@EndDate) = 2012 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2012' 
     WHEN YEAR(@EndDate) = 2013 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2013' 
     WHEN YEAR(@EndDate) = 2014 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2014' 
     WHEN YEAR(@EndDate) = 2015 AND (SELECT SiteWeighting FROM Site WHERE [email protected]_Skey) = 4 THEN '31 Dec 2015' 

     ELSE NULL 
     END, 

     ROUND(@Capacity,0) as Capacity, 
     @PitchType_Skey, @Site_Skey 

    END 
    SET @PitchType_Skey = @PitchType_Skey + 1 

END 
+0

'Capacity2'의 테이블 정의는 무엇입니까? '@ StartDate'와'@ EndDate'는 어디에서 값을 얻을 수 있습니까? 'PitchTypeWeighting'의 유형은 무엇입니까? 'SiteWeighting'의 유형은 무엇입니까? –

+0

Hi Lieven '@StartDate'및 '@EndDate'는 When 문으로부터 값을 가져 오며, When 문은 날짜를 결정하기 위해 사이트 테이블에서 1과 4 사이의 숫자를 가져옵니다. 두 가중치 모두 Int입니다. – wafw1971

답변

2

. 나는 이것이 문제의 원인이라고 추측하고 있으며 다른 정수 값 중 하나를 시작 날짜 열에 넣으려고합니다. 난 단지 당신의 열 이름을 추측 할 수 있도록

당신은 스키마를 게시하지 않은,하지만 난 당신처럼되고 스크립트의 삽입 부분을 변경 제안 : 모호성이에 관해서는 없다

INSERT INTO Capacity2 (StartDate, EndDate, Capacity, PitchTypeKey, Site_SKey) 
SELECT 
    CASE 
    WHEN ... 

그 방법 어떤 값을 원하는 열에 삽입 할 것인지를 결정합니다.

+0

안녕 브리지, 이 작동하지 않았다, 내 '@StartDate'및 '@EndDate'Null 값으로 돌아 왔습니다. 감사합니다. – wafw1971

+0

@ wafw1971 null 값은 삽입 할 열의 이름을 지정하는 것과 무슨 관련이 있습니까? – Bridge

+0

귀하의 조언을 따르고 나면 표가 채워지지만 '@ StartDate'및 '@EndDate'열은 Null 단어에만 날짜가 없습니다. 그 위의 스크립트에 따라 열 이름이 제대로 작동하지 않았습니다. – wafw1971