このようなものがあなたが探していることをするだろうと思います。WHERE IN
基本的には、節をJOIN
より柔軟なに移動するだけです。
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
これにより、フィルター a の結果セットが制限され、ステータスが拒否された行が削除されます
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientA | M1 2AA | Accepted
ClientA | M1 2AA | Pending
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending
フィルターC
これは、ステータスが拒否された同じ組み合わせを持つ行が存在しないクライアント/郵便番号の組み合わせのみを返します。
clientname_2 | clientPcode_2 | Status
----------------+-------------------+--------------------
ClientC | M1 2AA | Accepted
ClientC | M1 2AA | Pending