いくつかのテーブルに結合を作成し、2つのレベルの順序付けを使用してデータを注文しました。その1つは1つのテーブルの主キーです。OrderをBy Joinで使用する(PLSQL)
このデータをソートして、インラインビューとDISTINCT句を使用してデータから重複を除外したい場合は、これが私の目の前にあります。
データを並べ替えることも、それを区別することもできますが、同時に両方を行うことはできません。これを回避する手段があるのか、それとも不確実性の原則に相当するSQLを見つけたのでしょうか?
このコードは、ソートされたデータを返しますが、重複
SELECT
ada.source_tab source_tab
, ada.source_col source_col
, ada.source_value source_value
, ada.ada_id ada_id
FROM
are_aud_data ada
, are_aud_exec_checks aec
, are_audit_elements ael
WHERE
aec.aec_id = ada.aec_id
AND ael.ano_id = aec.ano_id
AND aec.acn_id = 123456
AND ael.ael_type = 1
ORDER BY
CASE
WHEN source_tab = 'Tab type 1' THEN 1
WHEN source_tab = 'Tab type 2' THEN 2
ELSE 3
END
,ada.ada_id ASC;
このコードは、重複を削除しますが、私は順序を失い...
SELECT DISTINCT source_tab, source_col, source_value FROM (
SELECT
ada.source_tab
, ada.source_col source_col
, ada.source_value source_value
, ada.ada_id ada_id
FROM
are_aud_data ada
, are_aud_exec_checks aec
, are_audit_elements ael
WHERE
aec.aec_id = ada.aec_id
AND ael.ano_id = aec.ano_id
AND aec.acn_id = 123456
AND ael.ael_type = 1
ORDER BY
CASE
WHEN source_tab = 'Tab type 1' THEN 1
WHEN source_tab = 'Tab type 2' THEN 2
ELSE 3
END
,ada.ada_id ASC
)
;
私がしようとすると含まれている場合は「ORDER BYと外部選択の最後に「ada_id」と表示され、エラーメッセージ「ORA-01791:SELECTされた式ではない」が表示されます。
ada_idは主キーであるため、すべてのレコードが一意です(これにより、DISTINCT句が無効になります)。 外部クエリに「ORDER BY ada_id」を含めることができると思ったでしょうが、私が言うように、エラーを返します。S – TommyWylde