У меня возникли трудности с поиском, почему моя строка t-sql появляется с сообщением об ошибке, поскольку вы можете видеть, что я создал этот sql для извлечения информации из других таблиц, чтобы создать таблицу производительности , однако что-то не так, и я не могу понять, что это такое. Вы можете помочь. Заранее спасибо.T-SQL и Case Statement
Сообщение об ошибке:
Msg 206, Level 16, State 2, Line 32
Operand type clash: int is incompatible with date
SQL скрипт:
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
Что такое определение таблицы для 'Capacity2'? Где '@ StartDate' и' @ EndDate' получают свои значения? Каков тип 'PitchTypeWeighting'? Каков тип 'SiteWeighting'? –
Hi Lieven «@StartDate» и «@EndDate» получают свои значения из инструкции «Когда», оператор «Когда» выводит число от 1 до 4 из таблицы сайтов, чтобы определить дату. Оба «Weightings» - Int. – wafw1971