ORDER BY avec paramètre de Sort [Résolu]

Signaler
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
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

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
23
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
---------------------