列名に基づいて重複する値を見つけることが目標である SQL クエリを作成しています。
SELECT a.PROJECTNAME
, a.OBJECTTYPE
, a.OBJECTID1
, a.OBJECTVALUE1
, a.OBJECTID2
, a.OBJECTVALUE2
, a.OBJECTID3
, a.OBJECTVALUE3
, a.OBJECTID4
, a.OBJECTVALUE4
FROM PSPROJECTITEM a
WHERE a.projectname = 'AZ_HCM_745'
AND 1 < (
SELECT COUNT(*)
FROM PSPROJECTITEM c
WHERE a.objecttype = c.objecttype
AND a.objectid1 =c.objectid1
AND a.objectvalue1 = c.objectvalue1
AND a.objectid2 = c.objectid2
AND a.objectvalue2 = c.objectvalue2
AND a.objectid3 = c.objectid3
AND a.objectvalue3 = c.objectvalue3
AND a.objectid4 = c.objectid4
AND a.objectvalue4 = c.objectvalue4)
ORDER BY a.projectname
私の意図は、の複製であるこれらの値を見つけることです。つまりa.projectname
、出力には の複製値が表示され、オブジェクトのカウントとAZ_HCM_745
同じフィールドが必要です。objecttype
objectid
私が探している出力は次のようになります。
PROJECTNAME OBJECTTYPE OBJECTID1 OBJECTVALUE1 OBJECTID2 OBJECTVALUE2 OBJECTID3 OBJECTVALUE3 OBJECTID4 OBJECTVALUE4
これらは、クエリから選択しているフィールド名です。
今、私は a.projectname = 'AZ_HCM_745' を渡しています。
私の目標は、AZ_HCM_745 とこれらの値を持つ projectname の複製であるデータを見つけることです。
AZ_HCM_745 0 1 AUDIT_AZ_ADP11P 0 0 0
元の値です。
重複した値は次のとおりです。
AZ_HCM_745_BKP 0 1 AUDIT_AZ_ADP11P 0 0 0
projectname は _bkp または _a と異なる場合があることに注意してください。私の目標は、objecttype objectid1 の値が重複している projectnames を見つけることであり、これらの値を選択したいと考えています。
また、クエリは、projectname ではなく、パラメーターで渡されるプロジェクト名の重複値のみを取得する必要があります。つまり、元の値を表示してはならず、重複のみを表示する必要があります。
使用中のデータベースは Oracle です。