Coalesce и Any не работают вместе - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь запустить команду так:

SELECT PITANJEID, NASLOV, ODGOVOR1, ODGOVOR2, ODGOVOR3, ODGOVOR4, ODGOVOR5, POENA, PITANJE 
FROM KVIZ_PITANJA 
WHERE KVIZ_GRUPA_ID = COALESCE(@ID, ANY(SELECT KVIZ_GRUPA_ID FROM KVIZ_PITANJA))

Проблема здесь, я получаю ошибку:

Токен неизвестен ЛЮБОЙ

Когда я запускаю команду только с Coalesce(2, 1), она работает нормально.

Когда я запускаю команду только с Any(select kviz_grupa_id from kviz_pitanja), она также работает нормально.

Почему я получаю эту ошибку, когда соединяю эти две команды?

Я хочу добиться, если пользователь передал null в качестве параметра, чтобы вообще не использовать команду where для этого параметра, так что это подход, который я хотел попробовать.

1 Ответ

0 голосов
/ 06 июля 2018

SOME и ANY должны предшествовать операции сравнения (=, <,> и т. Д.), Поэтому включение их в COALESCE вызывает вашу ошибку. Похоже, вы пытаетесь сказать «если есть @ID, то просто посмотрите, иначе верните все». Если это так, вы можете использовать эту структуру (обычно в приложениях SSRS):

SELECT PITANJEID, NASLOV, ODGOVOR1, ODGOVOR2, ODGOVOR3, ODGOVOR4, ODGOVOR5, POENA, PITANJE 
FROM KVIZ_PITANJA 
WHERE (KVIZ_GRUPA_ID = @ID OR @ID IS NULL)
...