Bonjour,
Je suis sous SQL Server 2005 et j'ai une procédure stockée qui doit me retourner les enregistrements de X à Y en appliquant un TRI. J'utilise donc la méthode du ROW_NUMBER(). Pour trier mes enregistrements je dois insérer le CASE dans la fonction OVER() qui suit mon ROW_NUMBER(). Cependant, ca n'applique aucun tri or si je mets moi même la colonne en dur ca tri bien.
Le CASE n'est pas accepté à l'intérieur d'une fonction OVER?
Voici le code qui ne marche pas :
Voici le code qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ROW_NUMBER() OVER (ORDER BY CASE @Field WHEN 'Name' THEN 'Event.event_name' WHEN 'Date' THEN 'Event.dt_stopreg' END) as RowNumber
Auriez-vous une solution? Est-ce la synthaxe du CASE qui ne fonctionne pas? Je précise que l'argument est bien passé à ma procédure stockée! Merci à vous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ROW_NUMBER() OVER (ORDER BY Event.event_name) as RowNumber
ps : étant dans une sous-requête [c'est un WITH(..requete..)], je ne peux pas trier autrement que dans le OVER() et c'est ce qu'il faut faire.
Partager