일부 테이블에 대한 조인을 작성한 및 두 가지 수준의 순서를 사용하여 데이터를 주문했습니다 - 중 하나는 한 테이블의 기본 키입니다.Ordering By 함께 사용하여 조인 (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