#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