Условное условие Где в SQL на основе выбранной опции - PullRequest
3 голосов
/ 18 февраля 2020

Новый для SQL Сервер и пытается написать запрос, который изменяет оператор where на основе параметров, представленных пользователю отчета. Я хочу выбрать местоположение и посмотреть, соответствуют ли элементы для этого места определенным критериям. Критерии изменяются в зависимости от местоположения. У меня есть рабочие запросы для каждого параметра, но я хочу использовать один отчет для проверки каждого местоположения.

SELECT
  Stuff
FROM
  Table1 
  INNER JOIN Table2
    ON Table1.ID = Table2.ID
WHERE
  Table2.DefaultIPGateway0 LIKE N'10.'+(@Site)+'.%'
  AND Table2.IPAddress0 LIKE N'10.%' 
  Case
    When (@Site) = "1" Then AND Table1.Name0 NOT LIKE N'ABC%' AND Table1.Name0 NOT LIKE N'ABD%'
    When (@Site) = "2" Then AND Table1.Name0 NOT LIKE N'EFG%'
    When (@Site) = "3" Then AND Table1.Name0 NOT LIKE N'HIJ%' AND Table1.Name0 NOT LIKE N'STU%' AND Table1.Name0 NOT LIKE N'MNO%'
  End

1 Ответ

2 голосов
/ 18 февраля 2020

Ваш запрос не является действительным оператором SQL, вы можете изменить свой запрос следующим образом, если хотите указать условие где, используя CASE.

SELECT Stuff
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table2.DefaultIPGateway0 LIKE N'10.' + @Site + '.%'
    AND Table2.IPAddress0 LIKE N'10.%'
    AND (
        CASE 
            WHEN @Site = '1'
                AND Table1.Name0 NOT LIKE N'ABC%'
                AND Table1.Name0 NOT LIKE N'ABD%'
                THEN 1
            WHEN @Site = '2'
                AND Table1.Name0 NOT LIKE N'EFG%'
                THEN 1
            WHEN @Site = '3'
                AND Table1.Name0 NOT LIKE N'HIJ%'
                AND Table1.Name0 NOT LIKE N'STU%'
                AND Table1.Name0 NOT LIKE N'MNO%'
                THEN 1
            ELSE 0
            END
        ) = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...