SQL множественный поиск в предложении где - PullRequest
0 голосов
/ 13 сентября 2018

Требуется помощь в использовании множественного поиска в предложении where:

Попытка написать запрос, который бы возвращал тикеты в «Закрыто завершено», «Закрыто не завершено», «Закрыто пропущено» и исключать строки, содержащие «Проект» в столбце, но не должен исключать, если содержит проектор, проект MS, проект 2016, проектор

Вот мой запрос:

Пожалуйста, дайте мне знать, что я здесь делаю не так

Select 
CONCAT(YEAR(a.[closed_at]),'-',DATENAME(MONTH,a.[closed_at])) as [Year_Month],
a.[Number],
a.[closed_at],
b.[Region], 
b.[Tower_Name],
a.[Short_description],
a.[description]
from [dbo].[sc_task_master_data] a
right join [dbo].[Master_Assignee_list] b
on a.[assignment_group]=b.Assignee_Group_Name
where a.[state] IN ('Closed Complete','Closed Incomplete','Closed Skipped')
and a.[short_description] not like '%project%'
and a.[short_description] like '%project 2%'
and a.[short_description] like '%MS Project%'
and a.[short_description] like '%PROJECT 20%'
and a.[short_description] like '%project installation%'
and a.[short_description] like '%Microsoft Project%'
and a.[short_description] like '%Projector%'
and a.[number] in ('SCTASK0050503',  'SCTASK0050510','SCTASK0051162')

Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Ваше предложение WHERE включает только AND s, что означает, что условия до и после должны совпадать.

Вы можете изменить свое утверждение, включив в него круглые скобки, которые эффективно группируют предложения вместе, чтобы иметь один логическийрезультат, что-то вроде:

where a.[state] IN ('Closed Complete','Closed Incomplete','Closed Skipped')
and (a.[short_description] not like '%project%'
or a.[short_description] like '%project 2%'
or a.[short_description] like '%MS Project%'
or a.[short_description] like '%PROJECT 20%'
or a.[short_description] like '%project installation%'
or a.[short_description] like '%Microsoft Project%'
or a.[short_description] like '%Projector%')
and a.[number] in ('SCTASK0050503',  'SCTASK0050510','SCTASK0051162')

Обратите внимание на круглые скобки во второй и предпоследней строках, которые группируют эти пункты вместе, так что это будет истинно, если любой из них истинен.

...