SQL Где дело с ошибкой нескольких критериев - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь написать оператор с условным предложением where. Проблема связана с необходимостью возврата нескольких критериев с использованием IN. В настоящее время я возвращаю ошибку:

Неверный синтаксис рядом с ключевым словом 'IN'.

/****** Script for SelectTopNRows command from SSMS  ******/
DECLARE @paramTime VARCHAR(50);
DECLARE @paramView VARCHAR(50);
SET @paramTime = '2020M2';
SET @paramView = 'YTD';

SELECT *
FROM [dbo].[vBiB_AllAccounts]

WHERE 
[sTime] =

CASE 
WHEN @paramView = 'YTD' AND @paramTime = '2020M1' THEN
'2020M1'
WHEN @paramView = 'YTD' AND @paramTime = '2020M1' THEN
In('2020M1','2020M2')
END

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Не используйте case в предложении where. Особенно, когда его можно легко заменить:

WHERE (@paramView = 'YTD' AND @paramTime = '2020M1' and [sTime] = '2020M1') 

Ваши два when условия одинаковы, так что это эквивалентно logi c в вашем вопросе.

Вы можете добавить дополнительные логи c с использованием or.

1 голос
/ 03 марта 2020

Предполагая, что наборы условий на самом деле разные (что не так в коде, который вы показали, но имело бы смысл для вашего вопроса), используйте OR:

WHERE 
    (
        @paramView = 'YTD' 
        AND @paramTime = '2020M1'
        AND [sTime] = '2020M1'
    ) OR (
        @paramView = 'YTD' 
        AND @paramTime = '2020M1'
        AND [sTime] IN ('2020M1','2020M2')
    )
...