SQL Server: возвращать результаты, если они не повторяются - PullRequest
1 голос
/ 01 июня 2019

Я просто не могу сосредоточиться на этом. Чтобы максимально упростить, допустим, у меня есть таблица:

Id      cid         Account
1       4010        Bank Co
2       5323        Webazon
3       3513        Internal
4       3513        PhoneCo
5       5597        Internal

Я хочу вернуть все результаты, за исключением строк, которые имеют значение Account = 'Internal', где также есть клиент с таким же cid. Таким образом, в этом случае мы бы вернули строки 1, 2, 4 и 5. Строка 3 не будет возвращена, потому что 'PhoneCo' и 'Internal' cid 3513. Однако строка 5 будет возвращена, потому что нет другой записи который разделяет cid 5597.

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

1 Ответ

0 голосов
/ 01 июня 2019

Вот один из методов:

select t.*
from t
where t.account <> 'Internal' or
      not exists (select 1
                  from t t2
                  where t2.cid = t.cid and t2.account <> 'Internal'
                 );

То есть выберите все все не внутренние записи. И выберите записи для внутренних учетных записей, для которых нет соответствующей не внутренней учетной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...