Table1で重複したCTNレコードを見つけるためにこのクエリを作成しています。したがって、私の考えは、CTN_NOが2回以上表示される場合、SELECT *ステートメントの出力に表示されるようにすることです。
次のサブクエリロジックを試しましたが、プルが必要です
SELECT *
table1
WHERE S_IND='Y'
and CTN_NO = (select CTN_NO
from table1
where S_IND='Y'
and count(CTN_NO) < 2);
order by 2
を使用して:
SELECT t.ctn_no
FROM YOUR_TABLE t
GROUP BY t.ctn_no
HAVING COUNT(t.ctn_no) > 1
... ctn_no
テーブルに重複している値。 WHEREに基準を追加すると、重複するものをさらに調整できます。
SELECT t.ctn_no
FROM YOUR_TABLE t
WHERE t.s_ind = 'Y'
GROUP BY t.ctn_no
HAVING COUNT(t.ctn_no) > 1
複製に関連付けられている他の列の値を表示する場合は、自己結合を使用します。
SELECT x.*
FROM YOUR_TABLE x
JOIN (SELECT t.ctn_no
FROM YOUR_TABLE t
GROUP BY t.ctn_no
HAVING COUNT(t.ctn_no) > 1) y ON y.ctn_no = x.ctn_no
このクエリを試してください。分析関数SUMを使用します。
SELECT * FROM
(
SELECT SUM(1) OVER(PARTITION BY ctn_no) cnt, A.*
FROM table1 a
WHERE s_ind ='Y'
)
WHERE cnt > 2
Ctn_noが2回以上繰り返される場合に、レコードを重複として識別する理由はわかりません。私のために、それが複製である以上の回数を繰り返します。この場合、クエリのラス部分をWHERE cnt > 1
に変更します