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

DB2 Discussion :

[ DB2 ] [ AS400] requête sql


Sujet :

DB2

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 30
    Points
    30
    Par défaut [ DB2 ] [ AS400] requête sql
    bonjour, j'ai un problème sur une requête :
    voici le chemin de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FCWD(CWDCOMPT,CWDMT , CWDDC )
    où
    CWDCOMPT : n°compte   
    CWDMT   : montant 
    CWDDC : le type d'opération 
                    'D': pour debit  
                    'C': pour crédit
    je veux pour chaque compte avoir le crédit et le débit , j'ai essayé la requete mais AS400 ne l'accepte pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT C.CWDCOMPT , REQ1.CREDIT , REQ2.DEBIT 
    FROM FCWD as C , 
          ( SELECT  CWDCOMPT, SUM(CWDMT) as CREDIT 
             FROM FCWD 
             WHERE CWDDC = 'C'
             GROUP BY CWDCOMPT) as REQ1,
         ( SELECT CWDCOMPT, SUM(CWDMT) as DEBIT
           FROM FCWD 
           WHERE CWDDC = 'D'
           GROUP BY CWDCOMPT ) as REQ2
    WHERE 
          ( C.CWDCOMPT = REQ1.CWDCOMPT )
          AND ( C.CWDCOMPT = REQ2.CWDCOMPT )

    [Modéré par Stessy]
    Modification du titre + tag
    Ajout de balises [code]

    Prière de lire les règles du forum

    Merci

  2. #2
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT CWDCOMPT,
    SUM(CASE CWDDC
          WHEN 'C' THEN CWDMT
          ELSE 0
        END) MT_CREDIT,
    SUM(CASE CWDDC
          WHEN 'D' THEN CWDMT
          ELSE 0
        END) MT_DEBIT
    FROM FCWD
    GROUP BY CWDCOMPT
    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 30
    Points
    30
    Par défaut [ DB2 ] [ AS400] requête sql
    Bonjour, j'ai essayé la requete , mais l'AS400 crie juste après le CASE.
    Merci tout de même car s'a ma mis sur le bon chemin.

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    et ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT F1.CWDCOMPT, SUM(F1.CWDMT), SUM(F2.CWDMT)
    FROM  FCWD F1, FCWD F2
    WHERE F1.CWDDC='C'
    AND F2.CWDDC='D'
    AND F1.CWDCOMPT = F2.CWDCOMPT
    GROUP BY F1.CWDCMPT
    Si tu as des comptes avec des seulement du debit, ils n'apparaitront pas sans jointure externe...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Pourquoi ne fais-tu pas une requète sous QUERY/400 ?
    ><((((º> .·´¯`·.¸ ><((((º> .·´¯`·.¸ ..><((((º>.·´¯`·.¸ ..><((((º>

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2002
    Messages : 27
    Points : 30
    Points
    30
    Par défaut
    je ne peux pas utiliser QUERY/400 , car je dois réccupérer mon resultat dans DBGRID dans Delphi.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Je suivrais fadace mais en faisant plutôt une jointure par JOIN suivi de UNION de façon à avoir
    1/ tous les comptes créditeurs qui ont également un débit associé
    2/ les comptes créditeurs seuls sans débit associé
    3/ les comptes débiteurs seuls sans crédit associé
    puis je trierais tout le bazar sur n° de compte
    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
    SELECT F1.CWDCOMPT, SUM(F1.CWDMT) Crédit, SUM(F2.CWDMT) Débit
    FROM  FCWD F1 JOIN FCWD F2
    ON      F1.CWDCOMPT = F2.CWDCOMPT
    WHERE F1.CWDDC = 'C'
    AND     F2.CWDDC = 'D'
    GROUP BY F1.CWDCMPT
    UNION
    SELECT F1.CWDCOMPT, SUM(F1.CWDMT) Crédit, SUM(F2.CWDMT) Débit
    FROM  FCWD F1 EXCEPTION JOIN FCWD F2
    ON      F1.CWDCOMPT = F2.CWDCOMPT
    WHERE F1.CWDDC = 'C'
    AND     F2.CWDDC = 'D'
    GROUP BY F1.CWDCMPT
    UNION
    SELECT F1.CWDCOMPT, SUM(F1.CWDMT) Crédit, SUM(F2.CWDMT) Débit
    FROM  FCWD F1 EXCEPTION JOIN FCWD F2
    ON      F1.CWDCOMPT = F2.CWDCOMPT
    WHERE F1.CWDDC = 'D'
    AND     F2.CWDDC = 'C'
    GROUP BY F1.CWDCMPT
    ORDER BY F1.CWDCMPT
    Je n'ai pas testé.

Discussions similaires

  1. [AS400] Pb sql recursif db2 as400
    Par lapinae dans le forum DB2
    Réponses: 4
    Dernier message: 30/05/2008, 13h08
  2. [DB2 sous MVS] Requête SQL
    Par neuropathie dans le forum DB2
    Réponses: 3
    Dernier message: 19/12/2007, 09h24
  3. Réponses: 7
    Dernier message: 20/08/2007, 16h40
  4. Réponses: 5
    Dernier message: 28/12/2006, 15h41
  5. Réponses: 7
    Dernier message: 07/10/2004, 23h59

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