Игнорирование всех приложений, которые имеют определенные атрибуты - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над запросом, чтобы найти все приложения, которые не запускают определенные правила.Каждое сработавшее правило регистрируется в отдельной строке, связанной с идентификатором приложения.

Данные выглядят так:

ID  RuleNumber

2   1
2   2
2   3
3   2
3   3
4   1
4   5

Вот что я попробовал:

SELECT ID,RuleNumber FROM Table WHERE RuleNumber not in (2,3)

Но это просто возвращает строки, которые не имеют этих номеров правил.Я хочу, чтобы он пропускал любые идентификаторы, к которым прикреплен один из этих номеров RuleNumbers, поэтому мой результат должен содержать строки, связанные с идентификатором 4.

Ответы [ 2 ]

1 голос
/ 18 июня 2019
SELECT  DISTINCT ID
FROM    Table T1
WHERE   NOT EXISTS (
                     SELECT 1
                     FROM   Table T2
                     WHERE  T1.ID = T2.ID
                     AND    T2.RuleNumber IN (2,3)
                   );
0 голосов
/ 18 июня 2019

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

SELECT DISTINCT ID
  FROM Table
 WHERE ID NOT IN
 (
  SELECT ID FROM Table WHERE RuleNumber IN (2,3)
 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...