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

PL/SQL Oracle Discussion :

Boucle avec condition sur la sortie


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Points : 51
    Points
    51
    Par défaut Boucle avec condition sur la sortie
    Bonjour,

    je dispose d'une table avec 7 colonne (toto1;toto2;...;toto7) pouvant prendre les valeurs {1,2,3,4} et une 8eme colonne comptant le nombre de variable égale à 4 sur chaque ligne.

    ex :

    toto1;toto2;toto3;toto4;toto5;toto6;toto7;count(condition);
    1; 2; 3; 4; 3; 4; 2; 2;
    4; 4; 4; 4; 4; 4; 4; 7;

    Je voudrais boucler de i: 1 to 7 (dernière colonne), compter pour chaque valeur de i le nombre de ligne qui vérifie "count(condition)" >= i et créer une table de sortie lorsqu'il y a au plus 10 enregistrement qui vérifie la condition.

    Toutes vos idées seront les bienvenus. Merci pour votre aide...

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    J'ai oublié de dire que je ne connais pas le PL SQL, par contre je connais le SQL. Je voudrais en faite automatiser le traitement qui est plutôt long à la main.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Le besoin ne me semble pas très clair.
    Si j'essaye de reformuler, vous souhaitez compter le nombre de lignes telles que votre colonne 8 (peu importe comment elle est calculée) soit supérieure ou égale à une valeur donnée ? Et s'il y a plus de 10 lignes, faire ... quelque chose avec une table, mais là pour le coup je n'ai vraiment pas compris quoi.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    En faite je voudrais récuperer, dans une table les lignes qui satisfont la condition uniquement si le nombre de lignes est inférieur à 10. C'est à dire tant que le nombre de ligne de la table qui vérifie la condition ("colonne8">=i) est plus grand que 10 alors on passe à i+1 et dès qu'on a moins de 10 ligne récuperer les lignes pour la valeur de "i".

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    WITH tableWithCondition AS
    (
    SELECT *
              ,CASE WHEN [...] THEN 1
                       WHEN [...] THEN 2
                       [...]
                       ELSE 0
                       END AS CountCondition
    ),
    counting AS 
    (
    SELECT CountCondition, count(*) AS nb
       FROM tableWithCondition 
     GROUP BY CountCondition
    ),
    minCount AS
    (
    SELECT min(CountCondition) AS minI
        FROM counting 
     WHERE nb <= 10
    )
    SELECT * 
      FROM tableWithCondition  t
               INNER JOIN minCount m ON (mi.minI = t.CountCondition)

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Merci pour ta réponse, je vais tester cela au plus vite ! Est-ce qu'il faut déclarer les variables comme en VBA ?

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Non il s'agit juste d'un select, en SQL pur.
    S'il vous convient, il suffit de le transformer en Insert.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 56
    Points : 51
    Points
    51
    Par défaut
    Cela marche parfaitement, merci à toi !

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

Discussions similaires

  1. Boucle For avec condition sur doublons
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/04/2013, 11h04
  2. Boucle If avec condition sur un Champ.
    Par shmider dans le forum IHM
    Réponses: 3
    Dernier message: 25/11/2010, 13h39
  3. [XL-2003] Boucle avec condition sur bouton ok
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2010, 11h50
  4. [Débutant] Plot/Extraction data avec condition sur texte sans boucle
    Par hervé_débutant dans le forum MATLAB
    Réponses: 3
    Dernier message: 02/12/2009, 16h22
  5. [E07] erreur sur une boucle avec condition
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/03/2009, 14h59

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