我认为这样的事情会做你正在寻找的东西。它本质上只是将您的WHERE IN
条款移动到JOIN
更灵活的 a 。
SELECT T1.builder_2, T1.sequence, T1.clientname_2, T1.clientPcode_2, T1.status
FROM tblClient T1
INNER JOIN
( SELECT clientname_2, clientPcode_2
FROM tblClient
GROUP BY clientname_2, clientPcode_2
HAVING COUNT(*) > 1
) AS T2
ON T1.clientname_2 = T2.clientname_2
AND T1.clientPcode_2 = T2.clientPcode_2
编辑
我不确定您要如何过滤它,因此将添加一个示例来展示您可以过滤数据的 3 种方式。
样本数据(仅相关列)
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientA | M1 2AA | Accepted
ClientA | M1 2AA | Pending
ClientA | M1 2AA | Rejected
ClientB | M1 2AA | Accepted
ClientB | M1 2AA | Rejected
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending
SELECT T1.builder_2, T1.sequence, T1.clientname_2, T1.clientPcode_2, T1.status
FROM tblClient T1
INNER JOIN
( SELECT clientname_2, clientPcode_2
FROM tblClient
WHERE Status NOT LIKE '%Rejected%' -- FILTER A
GROUP BY clientname_2, clientPcode_2
HAVING COUNT(*) > 1
AND SUM(IIF(Status LIKE '%Rejected%', 1, 0)) = 0 -- FILTER C
) AS T2
ON T1.clientname_2 = T2.clientname_2
AND T1.clientPcode_2 = T2.clientPcode_2
WHERE Status NOT LIKE '%Rejected%' -- FILTER B
仅过滤 A
这会将其限制为仅具有 2 行或更多行且状态未被拒绝的客户/邮政编码组合。状态为拒绝的行仍将被退回。
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientA | M1 2AA | Accepted
ClientA | M1 2AA | Pending
ClientA | M1 2AA | Rejected
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending
仅过滤器 B
这将找到所有重复的客户/邮政编码组合,并仅返回状态未被拒绝的行:
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientA | M1 2AA | Accepted
ClientA | M1 2AA | Pending
ClientB | M1 2AA | Accepted
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending
过滤器 A 和过滤器 B
这将仅限制仅过滤器的结果集以删除状态被拒绝的行
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientA | M1 2AA | Accepted
ClientA | M1 2AA | Pending
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending
过滤器 C
这将只返回不存在行的客户/邮政编码组合,具有相同的组合,状态为 Rejected:
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending