我已經在某些表上寫了一個連接,並且我已經使用兩個級別的排序來訂購數據 - 其中一個是一個表的主鍵。在連接上使用排序(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:不是一個SELECTed表達式',這真讓我感到厭煩!
ada_id是一個主鍵,所以每個記錄都是唯一的(這會使我的DISTINCT子句無效)。 我原以爲我可以在外部查詢中包含「ORDER BY ada_id」,但正如我所說 - 它會返回一個錯誤:S – TommyWylde 2012-02-20 16:41:32