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

SQL Oracle Discussion :

Requête retournant certains enregistrement à la fin


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut Requête retournant certains enregistrement à la fin
    Salut,

    J'ai une table "matable" qui contient un champs "momchamps".

    monchamps contient des valeurs entières de 1 à 10.

    J'ai une requête qui utilise un order by sur plusieurs champs autres que monchamp.

    Est ce que c'est possible de modifier la requête de manière à avoir toujours les

    enregistrement dont la valeur de monchamp est égale a 4 a la fin.

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when monchamp = 4 then 1 else 0 end , liste des autres champs

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Avec un DECODE dans le ORDER BY éventuellement.
    Ici, pour le tri, on fait comme si 4 était remplacé par 99999, qu'on considère supérieur à toute valeur réelle possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select num 
    from (select trunc(dbms_random.value*10) num from dual connect by rownum <10) 
    order by decode(num, 4, 99999, num);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          NUM
    ---------
            2
            5
            5
            7
            8
            9
            9
            4
            4
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when monchamp = 4 then 1 else 0 end , liste des autres champs
    Avec ça, pas besoin d'inventer une valeur supérieure bidon comme je l'ai fait, mais les données autres que le 4 ne sont pas triées, ce qui à mon avis fait quand même partie de la demande.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Avec ça, pas besoin d'inventer une valeur supérieure bidon comme je l'ai fait, mais les données autres que le 4 ne sont pas triées, ce qui à mon avis fait quand même partie de la demande.
    Si on veut trier comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when monchamp = 4 then 999 else monchamp end , liste des autres champs
    Mais ce dernier point n'est pas clair pour moi dans la demande.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/05/2012, 10h38
  2. Mettre certains enregistrement à la fin ?
    Par Shinosha dans le forum Débuter
    Réponses: 7
    Dernier message: 19/07/2011, 16h44
  3. [AC-2007] trier une liste en mettant seulement certains enregistrements en fin de liste ?
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/05/2010, 19h26
  4. Requête supprimant certains enregistrements
    Par marcGR dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/03/2008, 18h01
  5. Réponses: 3
    Dernier message: 02/06/2006, 13h38

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