Condividi tramite


Ordinare le righe (Visual Database Tools)

si applica a:SQL Server

È possibile ordinare le righe in un risultato della query. Ovvero, è possibile assegnare un nome a una determinata colonna o a un set di colonne i cui valori determinano l'ordine delle righe nel set di risultati.

Nota

L'ordine di ordinamento viene determinato in parte dalla sequenza di confronto della colonna. È possibile modificare la sequenza delle regole di confronto nella finestra di dialogo Regole di confronto.

Esistono diversi modi in cui è possibile ordinare i risultati delle query:

  • È possibile disporre le righe in ordine crescente o decrescente

    Per impostazione predefinita, SQL usa le colonne order-by per disporre le righe in ordine crescente. Ad esempio, per disporre i titoli dei libri in base al prezzo crescente, è sufficiente ordinare le righe in base alla colonna prezzo. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT *
    FROM titles
    ORDER BY price;
    

    D'altra parte, se si desidera disporre i titoli con i libri più costosi per primi, è possibile specificare esplicitamente un ordinamento dal più alto al più basso. Ciò significa che le righe dei risultati devono essere disposte in base ai valori decrescenti della colonna del prezzo. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT *
    FROM titles
    ORDER BY price DESC;
    
  • È possibile ordinare in base a più colonne

    Ad esempio, è possibile creare un set di risultati con una riga per ogni autore, ordinando prima per stato e quindi per città. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT *
    FROM authors
    ORDER BY state, city;
    
  • È possibile ordinare in base alle colonne che non vengono visualizzate nel set di risultati

    Ad esempio, è possibile creare un set di risultati con i titoli più costosi, anche se i prezzi non vengono visualizzati. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT title_id,
           title
    FROM titles
    ORDER BY price DESC;
    
  • È possibile ordinare in base alle colonne derivate

    Ad esempio, è possibile creare un set di risultati in cui ogni riga contiene un titolo del libro, con i libri che pagano prima la royalty più alta per copia. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT title,
           price * royalty / 100 AS royalty_per_unit
    FROM titles
    ORDER BY royalty_per_unit DESC;
    

    La formula per calcolare la royalty che ogni libro guadagna per copia viene sottolineata.

    Per calcolare una colonna derivata, è possibile usare la sintassi SQL, come nell'esempio precedente, oppure è possibile usare una funzione definita dall'utente che restituisce un valore scalare. Per altre informazioni sulle funzioni definite dall'utente, vedere la documentazione di SQL Server.

  • È possibile ordinare le righe raggruppate

    Per esempio; è possibile creare un set di risultati in cui ogni riga descrive una città, più il numero di autori in tale città, con le città contenenti molti autori che appaiono per prime. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state;
    

    La query usa state come colonna di ordinamento secondaria. Pertanto, se due stati hanno lo stesso numero di autori, tali stati vengono visualizzati in ordine alfabetico.

  • È possibile ordinare usando i dati internazionali

    Cioè; è possibile ordinare una colonna usando convenzioni di confronto diverse dalle convenzioni predefinite per tale colonna. Ad esempio, è possibile scrivere una query che recupera tutti i titoli dei libri di Jaime Patiño. Per visualizzare i titoli in ordine alfabetico, usare una sequenza di confronto spagnola per la colonna del titolo. Il codice SQL risultante potrebbe essere simile al seguente:

    SELECT title
    FROM authors
         INNER JOIN titleauthor
             ON authors.au_id = titleauthor.au_id
         INNER JOIN titles
             ON titleauthor.title_id = titles.title_id
    WHERE au_fname = 'Jaime'
          AND au_lname = 'Patiño'
    ORDER BY title COLLATE SQL_Spanish_Pref_CP1_CI_AS;