Join(plsql)で明確なもので注文を使用する
-
28-10-2019 - |
質問
いくつかのテーブルに結合を書きましたが、2つのレベルの順序付けを使用してデータを注文しました。そのうちの1つは1つのテーブルの主要なキーです。
さて、このデータをソートした状態で、インラインビューと個別の節を使用してデータから複製を除外したいと思います。これが私が停滞している場所です。
私はデータをソートするか、それを明確に並べ替えることができるようですが、同時に両方とも決してありません。これを回避する方法はありますか、それとも不確実性の原則に相当する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
)
;
外側の選択の最後に「ADA_IDによる注文」を試してみると、エラーメッセージが表示されます。
正しい解決策はありません
他のヒント
含めてみませんか ada_id
外側クエリの選択したフィールドで?
;WITH CTE AS
(
SELECT
ada.source_tab source_tab
, ada.source_col source_col
, ada.source_value source_value
, ada.ada_id ada_id
, ROW_NUMBER() OVER (PARTITION BY [COLUMNS_YOU_WANT TO BE DISTINCT]
ORDER BY [your_columns]) rn
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 = 356441
AND ael.ael_type = 1
ORDER BY
CASE
WHEN source_tab = 'Licensed Inventory' THEN 1
WHEN source_tab = 'CMDB' THEN 2
ELSE 3
END
,ada.ada_id ASC
)
select * from CTE WHERE rn<2
ADA_IDは外側クエリでは無意味であるようです。これらすべての値を削除して、個別のsource_tabとsource_colに煮詰めました...
注文は何になると思いますか?
各テーブルと列の最小ADA_IDが注文のドライバーになることを望んでいます(ただし、テーブル名は私には適切と思われます)
内部クエリに最小ADA_IDを含める(句ごとにグループが必要です)、それを参照して外側クエリに並べ替えます。
所属していません StackOverflow