Delen via


Rijen sorteren (Visual Database Tools)

van toepassing op:SQL Server-

U kunt de rijen in een queryresultaat ordenen. Dat wil gezegd, u kunt een bepaalde kolom of set kolommen een naam geven waarvan de waarden de volgorde van rijen in de resultatenset bepalen.

Notitie

De sorteervolgorde wordt gedeeltelijk bepaald door de sorteringsreeks van de kolom. U kunt de sorteringsreeks wijzigen in het dialoogvenster Sortering.

Er zijn verschillende manieren waarop u queryresultaten kunt sorteren:

  • U kunt rijen in oplopende of aflopende volgorde rangschikken

    SQL gebruikt standaard order-by-kolommen om rijen in oplopende volgorde te rangschikken. Als u bijvoorbeeld de boektitels wilt rangschikken op oplopende prijs, sorteert u de rijen op de kolom Prijs. De resulterende SQL kan er als volgt uitzien:

    SELECT *
    FROM titles
    ORDER BY price;
    

    Als u daarentegen de titels met de duurdere boeken eerst wilt rangschikken, kunt u expliciet een hoogste volgorde opgeven. Dat wil gezegd, u geeft aan dat de resultaatrijen moeten worden gerangschikt op aflopende waarden van de prijskolom. De resulterende SQL kan er als volgt uitzien:

    SELECT *
    FROM titles
    ORDER BY price DESC;
    
  • U kunt sorteren op meerdere kolommen

    U kunt bijvoorbeeld een resultatenset maken met één rij voor elke auteur, eerst ordenen op staat en vervolgens op plaats. De resulterende SQL kan er als volgt uitzien:

    SELECT *
    FROM authors
    ORDER BY state, city;
    
  • U kunt sorteren op kolommen die niet worden weergegeven in de resultatenset

    U kunt bijvoorbeeld eerst een resultatenset maken met de duurste titels, ook al worden de prijzen niet weergegeven. De resulterende SQL kan er als volgt uitzien:

    SELECT title_id,
           title
    FROM titles
    ORDER BY price DESC;
    
  • U kunt sorteren op afgeleide kolommen

    U kunt bijvoorbeeld een resultatenset maken waarin elke rij een boektitel bevat, met de boeken die eerst het hoogste royalty per exemplaar betalen. De resulterende SQL kan er als volgt uitzien:

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

    (De formule voor het berekenen van de royalty's die elk boek per kopie verdient, wordt benadrukt.)

    Als u een afgeleide kolom wilt berekenen, kunt u SQL-syntaxis gebruiken, zoals in het vorige voorbeeld, of u kunt een door de gebruiker gedefinieerde functie gebruiken die een scalaire waarde retourneert. Zie de DOCUMENTATIE van SQL Server voor meer informatie over door de gebruiker gedefinieerde functies.

  • U kunt gegroepeerde rijen sorteren

    Bijvoorbeeld; u kunt een resultatenset maken waarin elke rij een plaats beschrijft, plus het aantal auteurs in die stad, waarbij de steden met veel auteurs eerst worden weergegeven. De resulterende SQL kan er als volgt uitzien:

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

    De query gebruikt state als secundaire sorteerkolom. Als twee staten dus hetzelfde aantal auteurs hebben, worden deze statussen in alfabetische volgorde weergegeven.

  • U kunt sorteren met behulp van internationale gegevens

    Dat wil zeggen; u kunt een kolom sorteren met behulp van samenvouwbare conventies die verschillen van de standaardconventies voor die kolom. U kunt bijvoorbeeld een query schrijven waarmee alle boektitels van Azure Patiño worden opgehaald. Als u de titels in alfabetische volgorde wilt weergeven, gebruikt u een Spaanse sorteervolgorde voor de titelkolom. De resulterende SQL kan er als volgt uitzien:

    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;