Предложение SQL where (с условием) помогает в воспламенении

#sql #conditional-statements #ignition

#sql #условные операторы #воспламенение

Вопрос:

В настоящее время у меня есть SQL-запрос, который я запускаю в Ignition. Все работает нормально, если я выбираю определенную область. Проблема в том, что я хотел бы добавить к нему «ВСЕ». Я хотел бы иметь возможность игнорировать область как условие, если у нее есть выбор «ВСЕ».

Я не уверен, что это можно просто обработать с помощью SQL-запроса. Я запускаю запрос в раскрывающемся списке, чтобы заполнить его областями.

Это мой код:

 SELECT *
FROM jobrecord
where
    jobopendate >= '{Root Container.Group 5.Group 3.Popup Calendar.date}' AND
    jobopendate <= '{Root Container.Group 5.Group 3.Popup Calendar 1.date}' AND
    area = '{Root Container.Group 5.Group 3.Dropdown 9.selectedLabel}'
ORDER BY jobnumber
  

Ответ №1:

Вам нужно использовать or условие предложения where.

Если вы передадите @Area как все, этот скрипт вернет все области. Если вы передадите определенное значение, оно будет фильтроваться по этому значению области.

 declare @Area nvarchar(max) = 'someArea' 

SELECT *
FROM jobrecord
where
    (@Area = 'ALL' or (jobopendate >= '{Root Container.Group 5.Group 3.Popup Calendar.date}' AND
    jobopendate <= '{Root Container.Group 5.Group 3.Popup Calendar 1.date}' AND
    area = @Area))
ORDER BY jobnumber
  

Ответ №2:

Спасибо!

Мой окончательный код:

 declare @Area nvarchar(max) = '{Root Container.Group 5.Group 3.Dropdown 9.selectedLabel}' 

SELECT *
FROM jobrecord
where
    (@Area = 'ALL' and (jobopendate >= '{Root Container.Group 5.Group 3.Popup Calendar.date}' AND
    jobopendate <= '{Root Container.Group 5.Group 3.Popup Calendar 1.date}') or
    (area = @Area and jobopendate >= '{Root Container.Group 5.Group 3.Popup Calendar.date}' 
    and jobopendate <= '{Root Container.Group 5.Group 3.Popup Calendar 1.date}'))
ORDER BY jobnumber