IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Soucis d'ORDER BY dynamique (CASE) dans un OVER()


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut Soucis d'ORDER BY dynamique (CASE) dans un OVER()
    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 :
    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
    Voici le code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROW_NUMBER() OVER (ORDER BY Event.event_name) 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.

    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.

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    et ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select bla, bla, ROW_NUMBER() OVER (ORDER BY TOTO) AS RowNumber
    from
      (select bla, bla, 
                CASE @FIELD 
                WHEN 'Name' THEN Event.event_name 
                WHEN 'Date' THEN Event.dt_stopreg END)  as TOTO
      from Event)
    Y'a un truc qui me choque dans ton exemple c'est le nom des champs Event.event_name et Event.dt_stopreg entre quote. Ce n'est pas possible sauf en SQL dynamique. Et je pense qu'on peut très bien s'en passer et le faire en standard.

    Réessayes peut-être ton exemple initiale sans quote.

  3. #3
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut
    Ca fonctionne, merci :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un bouton sur plusieurs cases dans un tableau dynamique
    Par dododawn dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/12/2009, 12h51
  2. Réponses: 0
    Dernier message: 13/02/2008, 12h11
  3. Soucis flash XML contenant des liens dans un texte dynamique
    Par codefalse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 15/08/2007, 16h39
  4. taille dynamique des cases dans état
    Par exter666 dans le forum Access
    Réponses: 14
    Dernier message: 09/09/2005, 15h30
  5. Réponses: 6
    Dernier message: 26/01/2003, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo