2016-09-27 15 views
1

Я пытаюсь использовать IIF впервые вместо CASE и SQL Server бросает эту ошибку:SQL Server 2008 R2: TSQL IIF запрос не распознан

Msg 102, Level 15, State 1, Line 9
Incorrect syntax near '>'.

Мой код:

DECLARE @lDate date = CONVERT(date,GETDATE()); 
DECLARE @lMonth int = MONTH(@lDate); 
DECLARE @lDay int = DAY(@lDate); 

DECLARE @lPeriodStart date, @lPeriodEnd date, @lPayPeriod int, @lCutOffDay int = 14; 

--there are 24 pay periods find which one 
SET @lPayPeriod = @lMonth * 2 - IIF(@lDay > @lCutOffDay, 0, 1); 

SELECT @lPayPeriod 

Я не понимаю, как это отличается от рекомендаций от MSDN.

ответ

4

IIF был представлен в SQL Server 2012. Поскольку вы отметили свой вопрос с SQL Server 2008, я бы сказал, что это источник проблемы.

Ваш синтаксис действителен и код будет работать в более новой версии.

+0

Не являясь носителем английского языка Я не уверен, что «было» является правильным временем в первом предложении, или если «должно быть». Может ли кто-нибудь просветить меня? – jpw

+1

«было» здесь правильно. «были», было бы уместно, когда вы говорите о множественных вещах. «IIF был введен в SS 2012» «IIF и COLUMNSTORE были введены в SS 2012» –

+0

@DaveMarkle Спасибо, что разъяснил это для меня. – jpw

 Смежные вопросы

  • Нет связанных вопросов^_^