Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/05/2003, 17h01   #1
Membre à l'essai
 
Inscription : juin 2002
Messages : 27
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2002
Messages : 27
Points : 23
Points : 23
Envoyer un message via Yahoo à zinaif
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 :
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 :
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
zinaif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2003, 14h19   #2
Membre éprouvé
 
Avatar de Bloon
 
Homme
Conseil en assistance à maîtrise d'ouvrage
Inscription : avril 2002
Messages : 428
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil en assistance à maîtrise d'ouvrage
Secteur : Conseil

Informations forums :
Inscription : avril 2002
Messages : 428
Points : 499
Points : 499
Essaye ça :

Code :
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
Bloon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2003, 10h06   #3
Membre à l'essai
 
Inscription : juin 2002
Messages : 27
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2002
Messages : 27
Points : 23
Points : 23
Envoyer un message via Yahoo à zinaif
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.
zinaif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2003, 13h25   #4
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
et ca...

Code :
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...
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2004, 15h08   #5
Invité de passage
 
Inscription : janvier 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 5
Points : 4
Points : 4
Envoyer un message via ICQ à Yught Envoyer un message via MSN à Yught
Pourquoi ne fais-tu pas une requète sous QUERY/400 ?
Yught est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2008, 13h27   #6
Membre à l'essai
 
Inscription : juin 2002
Messages : 27
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2002
Messages : 27
Points : 23
Points : 23
Envoyer un message via Yahoo à zinaif
je ne peux pas utiliser QUERY/400 , car je dois réccupérer mon resultat dans DBGRID dans Delphi.
zinaif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2008, 19h42   #7
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
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 :
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é.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h13.


 
 
 
 
Partenaires

Hébergement Web