2010-04-25 4 views
0

J'ai obtenu une procédure stockée qui fournit une table d'étudiants, et il doit commander par nom de famille, nom etc ... il faut aussi trier ascendant, descendant, en fonction du paramètre @ orderby ...SQL orderby/case problème: orderdirection échoue

Code:

ORDER BY 
CASE 
WHEN @orderby = 'studentkey' THEN Studentkey END ASC, 
CASE 
WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC, 
CASE 
WHEN @orderby = 'initials' THEN Initials END ASC, 
CASE 
WHEN @orderby = 'initials' and @desc = 1 THEN Initials END DESC, 
CASE 
WHEN @orderby = 'firstname' THEN Firstname END ASC, 
CASE 
WHEN @orderby = 'firstname' and @desc = 1 THEN Firstname END DESC, 
CASE 
WHEN @orderby = 'nickname' THEN Nickname END ASC, 
CASE 
WHEN @orderby = 'nickname' and @desc = 1 THEN Nickname END DESC, 
CASE 
WHEN @orderby = 'insertion' THEN Insertion END ASC, 
CASE 
WHEN @orderby = 'insertion' and @desc = 1 THEN Insertion END DESC, 
CASE 
WHEN @orderby = 'surname' THEN Surname END ASC, 
CASE 
WHEN @orderby = 'surname' and @desc = 1 THEN Surname END DESC 
NED

Il y a une différence entre la production @desc = 1 et @desc = 0, mais pas ce que je désire ...

quelqu'un at-il un Solution?

+1

NED? Voulez-vous dire END? – paxdiablo

+0

Ouais :) petite preuve de frustration ... – Joris

Répondre

1

Essayez ceci:

CASE 
WHEN @orderby = 'studentkey' and @desc = 0 THEN Studentkey END ASC, 
CASE 
WHEN @orderby = 'studentkey' and @desc = 1 THEN Studentkey END DESC, 
... 
+0

Merci! J'ai regardé celui-là, encore étrange comment les choses fonctionnent bien – Joris