sql >> Database teknologi >  >> RDS >> Sqlserver

CASE-erklæring for Ordre efter klausul med flere kolonner og Desc/Asc Sort

Du kan skrive flere sager, selvom de alle har samme tilstand.

ORDER BY 
    CASE @OrderByColumn WHEN 1 THEN Forename END DESC, 
    CASE @OrderByColumn WHEN 1 THEN Date END, 
    CASE @OrderByColumn WHEN 1 THEN Location END, 
    CASE @OrderByColumn WHEN 2 THEN Surname END ASC 

Faktisk angiver du ikke en kolonne, der skal sorteres efter, men et udtryk.

Sagsudsagnet returnerer null, hvis betingelsen ikke er opfyldt, så faktisk betyder det:

CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END

Så hvis @OrderByColumn ikke er 1, returnerer sætningen altid NULL. Det udelukker i øvrigt ikke det fra sortering, men det sætter alle disse rækker sammen i resultatet, hvilket gør 'Efternavn' til den afgørende sortering inden for den gruppe af rækker.



  1. Hvad er det kulturneutrale datoformat for SQL Server

  2. Hvordan bruger man XML til at oprette OCI-Lob-objekt?

  3. Hvordan uploader man et billede til en database ved hjælp af php-script?

  4. Tjek om et objekt er en lagret procedure ved at bruge OBJECTPROPERTY() i SQL Server