Я написал соединение в некоторых таблицах, и я заказал данные, используя два уровня упорядочения - один из которых является первичным ключом одной таблицы.Использование Order 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: не ВЫБРАННОЕ выражение», которое бесит меня!
ada_id - это первичный ключ, поэтому каждая запись уникальна (это аннулирует мое предложение DISTINCT). Я бы подумал, что я могу включить «ORDER BY ada_id» во внешний запрос, но, как я говорю, он возвращает ошибку: S – TommyWylde