Я пытаюсь выбрать определенных клиентов из таблицы контактов, если у них нет указателя.исключить все строки для идентификатора, если 1 строка соответствует условию
ClientId | ContactId | Guardian
123 | 1 | Y
123 | 2 | N
123 | 3 | N
456 | 4 | N
456 | 5 | N
456 | 6 | N
Желаемый результат:
ClientId | ContactId | Guardian
456 | 4 | N
456 | 5 | N
456 | 6 | N
Так что моя цель состоит в том, что клиент 456 будет отображаться в моих результатах запроса, но не Клиент 123. Я написал следующее:
select * from Contacts
where Guardian <> (case when Guardian = 'Y'
then Guardian
else ''
end)
Я также пробовал
select * from Contacts c
where not exists (select 1
from Contacts c2
where c2.ContactId = c.ContactId
and c.Guardian = 'Y')
Но мои результаты просто исключают строки, где Guardian = Y, и печатают строки, где Guardian = N, хотя, если есть какая-либо строка, связанная с ClientId, где Guardian = Y, что ClientId не должен отображаться в результатах , Я искал, как выбирать строки с определенными значениями в них, но мне не удаётся найти, как полностью исключить ClientId, если соответствует одна из его строк.
Я был бы очень благодарен за любые предложения!
Пожалуйста, покажите нам желаемый результат для выборки данных вы уже обеспечили. –
@PM 77-1 Требуемый выход будет ClientId | Контакт | Опекун 456 | 4 | N 456 | 5 | N 456 | 6 | N – jfe042
Пожалуйста, добавьте эту информацию к вашему вопросу (с помощью [Изменить]). –