【发布时间】:2017-01-03 20:34:17
【问题描述】:
如果他们没有列出监护人,我正在尝试从联系人表中选择某些客户。
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 的行,即使有任何与 Guardian = Y 的 ClientId 相关联的行,该 ClientId 也不应该出现在结果中.我一直在寻找如何只选择其中具有某些值的行,但是如果其中一个行匹配,我没有找到如何完全排除 ClientId 的运气。
如果有任何建议,我将不胜感激!
【问题讨论】:
-
请向我们展示您已经提供的数据样本所需的输出。
-
@PM 77-1 期望的输出是 ClientId |联系方式 |监护人 456 | 4 | N 456 | 5 | N 456 | 6 | N
-
请将此信息添加到您的问题中(使用Edit)。
标签: sql sql-server tsql select