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 :

Comparaison d'un résultat avec une variable


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 484
    Par défaut Comparaison d'un résultat avec une variable
    Bonjour tout le monde,

    mon problème est le suivant :

    je veux comparer le résultat d'une fonction sum avec une donnée fixe exemple :

    Table X : CURSOR 01
    -------------------------------------------------------------------------------------
    NUM_|__NOM __|_CODE_____ SOMME_MODULE
    -------------------------------------------------------------------------------------
    01_______A ______A1_____SUM_A
    02_______B ______B1_____SUM_B
    03_______C ______C1_____SUM_C
    04_______D ______D1_____SUM_D
    .
    .
    .

    Table X : CURSOR 02


    -----------------------------------------------
    NUM_|__NOM __|_CODE____ SOMME_MODULE
    -----------------------------------------------
    01_______a ______a1________10
    02_______a ______a2________10
    03_______b ______b1________10
    04_______b ______b2________10
    03_______c ______c1________10
    04_______c ______c2________10
    03_______d ______d1________10
    04_______d ______d2________10
    .
    .
    .
    je voudrais comparer sum(a,a) (CURSOR2) avec le résultat SUM_A CURSOR1, et sum(b,b) avec le résultat SUM_B...ect...

    la clé primaire de la table X est l'ensemble (NUM,NOM,CODE)


    MERCI D'AVANCE.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    Je n'ai pas bien compris la question et, au vu du nombre de réponses, je ne dois pas être le seul.
    Qu'est-ce que sum(x,x) ?
    Tu parles de curseurs, cela signifierait que tu manipules le résultat de requêtes dans un programme. Quelles sont ces requêtes ? Quel langage utilises-tu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 484
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Je n'ai pas bien compris la question et, au vu du nombre de réponses, je ne dois pas être le seul.
    Qu'est-ce que sum(x,x) ?
    Tu parles de curseurs, cela signifierait que tu manipules le résultat de requêtes dans un programme. Quelles sont ces requêtes ? Quel langage utilises-tu ?

    sum (a,a) c'est sommer les lignes contenant a donc dans l'exemple c'est la ligne 1 et 2
    sum (b,b) c'est sommer les lignes contenant b donc dans l'exemple c'est la ligne 3 et 4

    ainsi de suite ...

  4. #4
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Bonjour

    A priori c'est assez simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with cursor_a as ( select ..... from table_x where ... ) ,
         cursor_b as ( select ..... from table_x where ... )
         agreg_b  as ( select num
                            , upper(nom) nom
                            , sum( somme_module ) total_module
                         from cursor_b
                        group by num
                               , nom )
    select num
         , nom
         , case when somme_module - total_module > 0 then 'Plus grand'
                when somme_module - total_module < 0 then 'Plus petit'
                else 'Egaux' end comparaison
      from cursor_a natural join agreg_b
    Cependant je ne suis pas certain d'avoir complètement saisi votre question

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 484
    Par défaut Comparer deux curseurs PLSQL
    Pour résumé j'ai 2 curseur à savoir :

    le 1er extrait les données telles qu'elles sont dans la table TABLE_X
    le 2er est le même mais extrait un résultat d'une agrégation (depuis la même table)

    voir capture d'écran :

    CURSEUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select round(sum(tra_amt*0.19),2) as SUM_TVA ,DATE,  SEQ,CODE
    FROM TABLE_X 
    Where condition 1, condition 2....
    Groupe by
    CURSEUR 02
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select tra_amt as TVA_COLEC ,DATE,  SEQ,CODE
    FROM TABLE_X
    Where condition 1, condition 2....
    donc je veux comparer le résultat du curseur 1 avec curseur 2 autrement : comparer SUM_TVA avec TVA_COLEC si je trouve différence j'affiche la ligne concernée

    MERCI.

  6. #6
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Vous nous dites (après un peu de mise en forme ):
    Citation Envoyé par LandGreen Voir le message
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select round(sum(tra_amt*0.19),2) as SUM_TVA 
         , DATE
         , SEQ,CODE
      from transact 
     where condition 1, condition 2....
     group by ...
    CURSEUR 02
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select tra_amt as TVA_COLEC 
         , DATE
         , SEQ,CODE
      from transact 
     where condition 1, condition 2....
    donc je veux comparer le résultat du curseur 1 avec curseur 2 autrement : comparer SUM_TVA avec TVA_COLEC si je trouve différence j'affiche la ligne concernée
    Je ne comprends pas grand chose

    la table transact et la table TABLE_X sont une seule et même table ?
    vous souhaitez comparer sum( round ( tra_amt * 0,19 ), 2 ) à tra_amt ? Mathématiquement, une somme d'arrondi d'un pourcentage premier a peu de chance d'être égale au total .

    Donc soit je ne comprends toujours pas ce que vous souhaitez faire, soit ce que vous souhaitez faire n'a pas de sens, soit vous avez mal décrit ce que vous souhaitez faire.

    Pouvez vous :
    - Décrire en une phrase métier ( donc pas en pseudo SQL, et sans utiliser le mot curseur ) ce que vous voulez faire ?
    - Donner votre code SQL complet avec le schéma des tables

    Par avance merci

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 484
    Par défaut Comparer en PLSQL
    Citation Envoyé par ojo77 Voir le message
    Vous nous dites (après un peu de mise en forme ):


    Je ne comprends pas grand chose

    la table transact et la table TABLE_X sont une seule et même table ?
    vous souhaitez comparer sum( round ( tra_amt * 0,19 ), 2 ) à tra_amt ? Mathématiquement, une somme d'arrondi d'un pourcentage premier a peu de chance d'être égale au total .

    Donc soit je ne comprends toujours pas ce que vous souhaitez faire, soit ce que vous souhaitez faire n'a pas de sens, soit vous avez mal décrit ce que vous souhaitez faire.

    Pouvez vous :
    - Décrire en une phrase métier ( donc pas en pseudo SQL, et sans utiliser le mot curseur ) ce que vous voulez faire ?
    - Donner votre code SQL complet avec le schéma des tables

    Par avance merci


    la table est la même (TABLE_X)

    je veux retourner toutes les lignes ou il y a une différence entre les deux curseurs, j'ai utilisé un MINUS entre les deux curseur il affiche les lignes ou il y'a décalage

    maintenant je veux retourner la différence (voir l'image)

  8. #8
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    De ce que je comprends, la requête que vous cherchez ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with cursor_a as ( select ..... from table_x where ... ) ,
         cursor_b as ( select ..... from table_x where ... )
    select num
         , nom
         , sum_tva
         , tva_collect
      from cursor_a natural join cursor_b
     where sum_tva - tva_collect != 0
    Il vous reste à la compléter avec les bons codes SQL pour cursor_a et cursor_b

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

Discussions similaires

  1. [Batch] Comparaison de deux fichiers texte, et affectation du résultat dans une variable.
    Par technocognis dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 19/08/2015, 17h03
  2. Réponses: 4
    Dernier message: 31/07/2014, 17h17
  3. Réponses: 4
    Dernier message: 23/08/2013, 16h38
  4. [Smarty] Attribuer une class en fonction d'un résultat avec une variable
    Par kitten13 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/09/2008, 21h03
  5. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 11h25

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