ORDER BY avec paramètre de Sort

Résolu
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 20 déc. 2007 à 12:09
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 20 déc. 2007 à 12:27
Bonjour à tous,

Alors voila, je suis en train de travailler sur une procédure stockée et je voudrais savoir comment rendre dynamique mon order by pour le sorting. En effet, j'ai déjà trouver mon bonheur afin de le rendre dynamique sur la colonne à trier. Voici mon exemple:

DECLARE @ColOrder varchar(50)
SET @ColOrder = 'Name'


SELECT * FROM Person
 ORDER BY
  CASE @ColOrder WHEN 'Name' THEN Name END,
  CASE @ColOrder WHEN 'Age' THEN Age END,
  CASE @ColOrder WHEN 'Gender' THEN Gender END

Totu ceci fonctionne parfaitement. Seulement, je voudrais pouvoir rendre dynamique le tri ascendant ou descendant (ASC ou DESC)
J'ai essayé en ajoutant la ligne :
  CASE @ColOrder WHEN 'Name Desc' THEN Name DESC END,
Mais cela ne fonctionne pas, il aime pas trop le mot clé ^^

Je m'en remet donc à vous si vous avez une petit idée.

Merci d'avance,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------

1 réponse

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
20 déc. 2007 à 12:27
Re,

Autant pour moi, cela marche si on modifie un tant soit peu la ligne que j'avais rajouté. Cela donne donc:

SELECT * FROM Person
 ORDER BY
  CASE @ColOrder WHEN 'Name' THEN Name END,
  CASE @ColOrder WHEN 'Name Desc' THEN Name END DESC,
  CASE @ColOrder WHEN 'Age' THEN Age END,
  CASE @ColOrder WHEN 'Age Desc' THEN Name END DESC,
  CASE @ColOrder WHEN 'Gender' THEN Gender END,
  CASE @ColOrder WHEN 'Gender Desc' THEN Name END DESC

Merci quand même et désolé pour le dérangement ^^

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
Rejoignez-nous