【发布时间】:2012-03-10 23:57:07
【问题描述】:
我已经在一些表上编写了一个连接,并且我已经使用两个排序级别对数据进行了排序——其中一个是一个表的主键。
现在,对这些数据进行排序后,我想使用内联视图和 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: not a SELECTed expression”,这让我很生气!!
【问题讨论】:
标签: sql sql-order-by distinct inline-view