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 :

Addition de 2 colonnes


Sujet :

SQL Oracle

  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Addition de 2 colonnes
    Bonjour j'aimerais avoir la difference nommé SALAIRE des colonnes PAYE ET RETENU. voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else null end) "PAYE",
          sum(case when r.sens='-' then e.montant else null end) "RETENU"
    from rubrique r, elements e, salarie s
     where e.norubrique=r.norubrique
     and e.nummatric=s.nummatric
     and  (PAYE - RETENU) as "SALAIRE" <--- Erreur<---
     group by s.nom, s.prenom, s.nummatric;
    Quelques soit l'endroit où j'insers cette ligne (PAYE - RETENU) as "SALAIRE", il me donne des erreurs.
    Merci de m'aider

  2. #2
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Addition de 2 colonnes
    Bonjour j'aimerais avoir la difference nommé SALAIRE des colonnes PAYE ET RETENU. voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else NULL end) "PAYE",
          sum(case when r.sens='-' then e.montant else NULL end) "RETENU"
    FROM rubrique r, elements e, salarie s
     WHERE e.norubrique=r.norubrique
     AND e.nummatric=s.nummatric
     AND  (PAYE - RETENU) AS "SALAIRE" <--- Erreur<---
     GROUP BY s.nom, s.prenom, s.nummatric;
    Quelques soit l'endroit où j'insers cette ligne (PAYE - RETENU) as "SALAIRE", il me donne des erreurs.
    Merci de m'aider

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Quelle est l'utilité de l'alias dans la clause where ?

  4. #4
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    je veux juste ne pas me tromper dans mes instructions, sinon tu peux m'aider ou pas??

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    impossible d'utiliser les alias dans la claure where!
    impossible egalement d'avoir des fonctions de groupe dans la clause where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    select s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else null end) "PAYE",
          sum(case when r.sens='-' then e.montant else null end) "RETENU"
    from rubrique r, elements e, salarie s
     where e.norubrique=r.norubrique
     and e.nummatric=s.nummatric
    having 
          ( sum(case when r.sens='+' then e.montant else null end) 
          - sum(case when r.sens='-' then e.montant else null end) )
    > 0  
     group by s.nom, s.prenom, s.nummatric;

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    supprimer simplement cet alias inutile
    AND PAYE - RETENU = ...

  7. #7
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour ton intervention, mais moi ce que je vourais afficher, c'est le calcul de ça :

    ( sum(case when r.sens='+' then e.montant else NULL end)
    - sum(case when r.sens='-' then e.montant else NULL end)
    c'est vrai que ton intervention m'a éclairer mais je voudrais l'afficher comme l'alias SALAIRE. Merci

    Parce que ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else NULL end) "PAYE",
          sum(case when r.sens='-' then e.montant else NULL end) "RETENU"
    FROM rubrique r, elements e, salarie s
     WHERE e.norubrique=r.norubrique
     AND e.nummatric=s.nummatric
    HAVING 
          ( sum(case when r.sens='+' then e.montant else NULL end) 
          - sum(case when r.sens='-' then e.montant else NULL end) )
    > 0  
     GROUP BY s.nom, s.prenom, s.nummatric;
    Me donne comme reponse :

    NUMMATRIC NOM PRENOM PAYE RETENU
    ---------------------- -------------------- -------------------- ---------------------- ----------------------
    1001 Durand Paul 16000 1100
    1002 Pascal Blaise 22500 2000


    je voudrais afficher SALAIRE après RETENU qui est la difference de PAYE - RETENU

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Ne sera affiché que les termes présents dans la clause SELECT. Il ne sert donc a rien d'essayer de mettre des alias dans les autres partie (WHERE,GROUP BY, etc.)

  9. #9
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    après égale, je met "SALAIRE" ainsi ou comment ??

    AND PAYE - RETENU = "SALAIRE" ??

    Merci

  10. #10
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    j'ai essayé cette requette mais, je n'ai pas la colonne salaire affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else NULL end) "PAYE",
          sum(case when r.sens='-' then e.montant else NULL end) "RETENU"
    FROM rubrique r, elements e, salarie s
     WHERE e.norubrique=r.norubrique
     AND e.nummatric=s.nummatric
    HAVING 
          ( sum(case when r.sens='+' then e.montant else NULL end) 
          - sum(case when r.sens='-' then e.montant else NULL end) )
    > 0  
     GROUP BY s.nom, s.prenom, s.nummatric;
    après exécution j'ai :

    NUMMATRIC NOM PRENOM PAYE RETENU
    ---------------------- -------------------- -------------------- ---------------------- ----------------------
    1001 Durand Paul 16000 1100
    1002 Pascal Blaise 22500 2000

  11. #11
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Mais qu'est-ce que vous voulez tester ? les termes de la clause where doivent comporter un opérateur SQL >, =, like, etc.

  12. #12
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    j'ai essayé cette requette mais, je n'ai pas la colonne salaire affiché :
    Ce qui doit être affiché doit être dans la partie SELECT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else NULL end) "PAYE",
          sum(case when r.sens='-' then e.montant else NULL end) "RETENU",
    sum(case when r.sens='+' then e.montant else NULL end)
    -
    sum(case when r.sens='-' then e.montant else NULL end) "SALAIRE"
    FROM rubrique r, elements e, salarie s
     WHERE e.norubrique=r.norubrique
     AND e.nummatric=s.nummatric
    HAVING 
          ( sum(case when r.sens='+' then e.montant else NULL end) 
          - sum(case when r.sens='-' then e.montant else NULL end) )
    > 0  
     GROUP BY s.nom, s.prenom, s.nummatric;

  13. #13
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    je comprend pas ce que tu veux dire, et je suis jstement là pour qu'on m'aide. je teste rien, je veux juste afficher la différence de paye et retenu.

  14. #14
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    alors regarde le code que je viens de mettre.
    Je ne vois pas comment expliquer plus clairement que ce qui doit être affiché doit être placé dans la clause SELECT et nulle part ailleurs.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Par défaut
    Teste la requête que SheikYerbouti vient de te donner, je pense que c'est ce que tu veux :-/

    Il t'explique justement que pour AFFICHER un résultat (en l'occurence, SALAIRE que tu veux afficher), il faut le mettre dans SELECT et non dans WHERE.

  16. #16
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    je viens juste de tester sa requette et j'ai cette erreur :

    SQL Error: ORA-00923: mot-cl� FROM absent � l'emplacement pr�vu
    00923. 00000 - "FROM keyword not found where expected"

  17. #17
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut RESOLU
    Hello, C'est cool, ça marche désolé j'avais oublié la virgule après le "RETENU",


  18. #18
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut RESOLU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT s.nummatric, s.nom, s.prenom,
          sum(case when r.sens='+' then e.montant else NULL end) as "PAYE",
          sum(case when r.sens='-' then e.montant else NULL end) as "RETENU",
          sum(case when r.sens='+' then e.montant else NULL end) - sum(case when r.sens='-' then e.montant else NULL end) "SALAIRE"
    FROM rubrique r, elements e, salarie s
     WHERE e.norubrique=r.norubrique
     AND e.nummatric=s.nummatric
     GROUP BY s.nom, s.prenom, s.nummatric;

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

Discussions similaires

  1. [Débutant] Addition de deux colonnes d'une table liée a un datagridview
    Par ibn05 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/03/2015, 15h09
  2. addition de vecteurs colonne et ligne
    Par Dam2227 dans le forum MATLAB
    Réponses: 5
    Dernier message: 18/05/2012, 00h38
  3. Réponses: 7
    Dernier message: 28/04/2010, 15h31
  4. Statistique sur addition de colonnes
    Par andreditdd dans le forum Bases de données
    Réponses: 7
    Dernier message: 04/03/2007, 15h54
  5. [VB.Net 05] Addition dans une colonne d'un DataGridView
    Par collaud_vb dans le forum Windows Forms
    Réponses: 13
    Dernier message: 26/09/2006, 16h53

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