Em um SELECT DISTINCT com uma cláusula ORDER BY, se você especificar um valor no ORDER BY que não existe na cláusula SELECT, o Oracle retornará a exceção `ORA-01791: not a SELECTed expression`.

Veja esse exemplo:

    SELECT DISTINCT item.name
      FROM item
     ORDER BY item.group_id

A coluna `item.id` não está na cláusula SELECT, então o Oracle causará um ORA-01791. A versão corrigida pode ser:

    SELECT DISTINCT item.name, item.group_id
      FROM item
     ORDER BY item.group_id

Se uma coluna na cláusula SELECT tem um alias, você também pode usar o alias na cláusula ORDER BY:

    -- consultas válidas
    SELECT DISTINCT item.name AS full_name
      FROM item
     ORDER BY item.name;

    SELECT DISTINCT item.name AS full_name
      FROM item
     ORDER BY full_name;

Esteja ciente de que até a versão 11.2.0.4, o Oracle aceitava alguns valores incorretos em ORDER BY, como:

    SELECT DISTINCT UPPER(item.name) AS full_name, item.group_id
      FROM item
     ORDER BY item.name -- deveria ser "UPPER(item.name)" ou "full_name"

Você deve corrigir as consultas para evitar problemas de compatibilidade com versões mais novas do Oracle.