Questo approccio è disponibile in SQL Server 2000, puoi selezionare valori distinti da una tabella e ordinare per colonna diversa che non è incluso in Distinct. Tuttavia, in SQL 2012, tramite l'utente verrà visualizzato un errore "Gli articoli ORDER BY devono essere visualizzati nell'elenco di selezione se si specifica SELECT DISTINCT."
Quindi, se si desidera utilizzare la stessa funzionalità di SQL 2000, è possibile utilizzare il numero di colonna per l'ordine (non consigliato nelle migliori pratiche).
select distinct(n_num) from abc_test order by 1
Questo ordinerà la prima colonna dopo aver recuperato il risultato. Se si desidera che l'ordine venga eseguito in base a colonne diverse da quelle distinte, è necessario aggiungere la colonna anche nell'istruzione select e utilizzare il numero di colonna per ordinare.
select distinct(n_num), k_str from abc_test order by 2
fonte
2014-09-16 14:25:40
Potrebbe mostrare i risultati se si esegue quei due query? La prima query dovrebbe restituire l'errore 'ORA-01791: non un'espressione SELEZIONATA' poiché la colonna' k_str' non è selezionata. È questa la query effettiva che hai eseguito? (Può essere accettabile in 9i, ma non ne sono sicuro.) –
Stesso effetto su SQL Server ma con un messaggio di errore più descrittivo, "Gli articoli ORDER BY devono essere visualizzati nell'elenco di selezione se viene specificato SELECT DISTINCT." – onedaywhen