以下のクエリで問題があります。ステップの列を結合します。 例えばa.code最初にb.name1が一致しない場合は、name2などを結合します。ただし、クエリを処理できません。oracleで段階的に注文を結合する
SELECT * FROM TABLE A
LEFT JOIN TABLE B
ON A.CODE = B.NAME1
OR A.CODE = B.NAME2
OR UPPER(B.NAME3) = UPPER(A.NAME)
おかげ
編集 以下のサンプル、 とTABLEB.CODE = TABLEA.NAME1が一致した場合、その後に見えるOR TABLEB.CODE = TABLEA.NAME2したくありません。 そして、TABLEB.CODE = TABLEA.NAME1と一致しない場合、その順序で列を段階的に一致させます。
WITH TABLEA AS (SELECT 13445 AS ID,'A' AS TYPE,'DFSF' AS NAME1 , 'PCK' AS NAME2 FROM DUAL
UNION ALL
SELECT 13445 AS ID,'A' AS TYPE,'PCK' AS NAME1 , 'PCK' AS NAME2 FROM DUAL),
TABLEB AS (SELECT 56544 AS ID, 'PCK' AS CODE, 'PCK' AS FRST_NM FROM DUAL)
SELECT * FROM TABLEA
LEFT JOIN TABLEB
ON TABLEB.CODE = TABLEA.NAME1
OR TABLEB.CODE = TABLEA.NAME2
OR UPPER(TABLEB.FRST_NM) = UPPER(TABLEA.NAME2)
与えるサンプルデータと予想される出力 – Utsav
あなたは自分でテーブルに参加しますか? –
どの条件が一致しても問題にならないのはなぜですか?結果には影響しません。それとも、テーブルBのコードでは、テーブルAのコードと一致する「最良の」ものだけを探したいのですか?より多くのデータと期待される結果は依然として有効です。 –