Clausola ORDER BY (Transact-SQL)

Data aggiornamento: 14 aprile 2006

Specifica il tipo di ordinamento utilizzato per le colonne restituite in un'istruzione SELECT. La clausola ORDER BY non è valida in viste, funzioni inline, tabelle derivate e subquery, a meno che non sia specificata la parola chiave TOP.

[!NOTA] Nella definizione di una vista, di una funzione inline, di una tabella derivata o di una subquery, la clausola ORDER BY viene utilizzata esclusivamente per determinare le righe restituite dalla clausola TOP. La clausola ORDER BY non garantisce risultati ordinati in caso di query su questi costrutti, a meno che tale clausola non venga specificata anche nella query.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
] 

Argomenti

  • order_by_expression
    Specifica la colonna di ordinamento. Per specificare la colonna di ordinamento è possibile utilizzare il nome, l'alias di colonna oppure un valore integer non negativo rappresentante la posizione del nome o dell'alias nell'elenco di selezione. Non è possibile specificare un valore integer quando l'argomento order_by_expression è incluso in una funzione di rango. Una colonna di ordinamento può includere un'espressione, ma quando il database è in modalità compatibilità (90) di SQL Server 2005, l'espressione non può essere risolta in una costante. I nomi e gli alias di colonna possono includere il nome della tabella o della vista. In SQL Server 2005 i nomi e gli alias di colonna completi vengono risolti nelle colonne elencate nella clausola FROM. Se il valore specificato in order_by_expression non è completo, deve essere univoco tra tutte le colonne elencate nell'istruzione SELECT.

    È possibile specificare più colonne di ordinamento. La sequenza delle colonne di ordinamento nella clausola ORDER BY definisce l'organizzazione del set di risultati ordinato.

    La clausola ORDER BY può includere elementi non inclusi nell'elenco di selezione. Se, tuttavia, viene specificata la clausola SELECT DISTINCT o se l'istruzione SELECT contiene una clausola GROUP BY o un operatore UNION, le colonne di ordinamento devono essere incluse nell'elenco di selezione.

    Inoltre, quando l'istruzione SELECT include un operatore UNION, i nomi o gli alias di colonna devono corrispondere a quelli specificati nel primo elenco di selezione.

    [!NOTA] In una clausola ORDER BY non è possibile utilizzare colonne di tipo ntext, text, image o xml.

  • COLLATE {collation_name}
    Specifica che l'operazione ORDER BY deve essere eseguita in base alle regole di confronto indicate in collation_name anziché in base a quelle della colonna definite nella tabella o nella vista. collation_name può essere un nome di regole di confronto di Windows o SQL. Per ulteriori informazioni, vedere Impostazioni delle regole di confronto durante l'installazione e Utilizzo delle regole di confronto SQL. Il parametro COLLATE può essere applicato solo a colonne con i tipi di dati char, varchar, nchar e nvarchar.
  • ASC
    Specifica che i valori della colonna specificata devono essere disposti in ordine crescente, dal valore minimo al valore massimo.
  • DESC
    Specifica che i valori della colonna specificata devono essere disposti in ordine decrescente, dal valore massimo al valore minimo.

Osservazioni

I valori Null vengono considerati i valori in assoluto più bassi.

Non esiste alcuna limitazione per il numero di elementi della clausola ORDER BY. Sono tuttavia previste dimensioni massime pari a 8.060 byte per le righe delle tabelle di lavoro intermedie necessarie per le operazioni di ordinamento, il che limita le dimensioni totali delle colonne specificate in una clausola ORDER BY.

Quando viene utilizzata insieme a un'istruzione SELECT...INTO per l'aggiunta di righe da un'altra origine, la clausola ORDER BY non garantisce l'inserimento delle righe nell'ordine specificato.

Vedere anche

Riferimento

Espressioni (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)

Altre risorse

Ordinamento delle righe con la clausola ORDER BY

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Nuovo contenuto:
  • Aggiunta di un chiarimento sullo scopo di ORDER BY nella definizione di una funzione inline, di una tabella derivata o di una subquery.

5 dicembre 2005

Nuovo contenuto
  • Aggiunta di un chiarimento sullo scopo di ORDER BY nella definizione di una vista.