case combineren met order by in sql
Terug naar overzicht

CASE combineren met ORDER BY in SQL

Wilt u weten hoe u CASE kunt combineren met ORDER BY in SQL? U heeft vast wel eens een CASE functie gebruikt. Mogelijk heeft u deze nooit gecombineerd met een ORDER BY statement. Na het lezen van deze blog zult u dat zeker gaan doen. We beginnen eerst met een korte uitleg van de CASE functie.

CASE

Simpel gezegd is CASE een SQL-statement dat waarden doorloopt en retourneert volgens de opgegeven voorwaarden. Het is de manier van SQL om de IF-THEN-ELSE-logica te schrijven en bestaat uit vijf trefwoorden: CASE, WHEN, THEN, ELSE en END.

Wanneer het in een SELECT-statement wordt gebruikt, werkt het als volgt:

  • Wanneer aan de voorwaarde wordt voldaan, retourneer dan een bepaalde waarde, of retourneer anders een andere waarde en beëindig het controleren van de voorwaarden.

De code ziet er als volgt uit:

  • CASE
  • WHEN <voorwaarde> THEN <waarde>,
  • WHEN <andere voorwaarde> THEN <waarde>
  • ELSE <waarde>
  • END AS <kolomnaam>

Het onderstaande voorbeeld zal dit duidelijker maken.

CASE Voorbeeld

Stel u beschikt over de volgende dataset genaamd ‘Films’:

case combineren order by sql

U wilt een extra kolom toevoegen die aangeeft of de film uit de 20ste eeuw of 21ste eeuw komt. Dus wanneer de film ouder is dan 2001 (oftewel <2001) moet deze de waarde krijgen ‘20th-century film’. Wanneer de film uit het jaar 2001 of jonger is, moet de waarde worden ‘21th-century film’.

De code wordt als volgt:

  • SELECT*,
  • CASE
  • WHEN year < 2001 THEN ’20th-century film’
  • ELSE ’21st-century film’
  • END AS century
  • FROM films

Het resultaat hiervan is:

case combineren in sql

CASE in combinatie met ORDER BY

De ORDER BY-component wordt gebruikt om het resultaat in oplopende of aflopende volgorde te sorteren. Door hier een CASE-statement te introduceren, kunt u uw ORDER BY verbeteren door u in staat te stellen resultaten te ordenen op een aantal andere (en meerdere) criteria.

Het volgende voorbeeld zal dit verduidelijken.

CASE Voorbeeld 2

U beschikt over de volgende dataset genaamd ‘Shops’:

order by combineren met case in sql

We willen de gegevens eerst per land (Country) ordenen. Vervolgens moet elke winkel in hetzelfde land worden gesorteerd op stad (City) behalve als de winkel in de VS is. Dan moet worden gesorteerd op de kolom staat (State). De code die dit kleine probleem oplost is:

  • SELECT *
  • FROM shops
  • ORDER BY country,
  • CASE
  • WHEN country = ‘USA’ THEN state
  • ELSE city
  • END;

Het resultaat hiervan is:

case voorbeeld sql

Conclusie: CASE combineren met ORDER BY in SQL

Door ORDER BY te combineren met CASE kunt u de gegevens sorteren naar elke gewenste vorm. Wil je meer kennis opdoen over SQL? Schrijf je dan hieronder in en ontvang hoge korting op je eerste cursus.

Geschreven door

Thomas Duin

Eigenaar

Gespecialiseerd in diverse applicaties & software

SQL cursussen