Je veux faire une requête qui fait la somme des montants mais en faisant le test sur le sens d'opération.Par exemple ma table contient:
montant , sens
10 , D
20 , D
30 , C
12 , C
Je veux en sortie:
montantD, montantC
30 , 42
Merci
Je veux faire une requête qui fait la somme des montants mais en faisant le test sur le sens d'opération.Par exemple ma table contient:
montant , sens
10 , D
20 , D
30 , C
12 , C
Je veux en sortie:
montantD, montantC
30 , 42
Merci
Salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select debit.*, credit.* from (select sum(montant) montantD from table where sens = 'D') debit, (select sum(montant) montantC from table where sens = 'C') credit
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 With data as ( 2 select 10 mnt, 'D' type from dual union all 3 select 20 mnt, 'D' type from dual union all 4 select 30 mnt, 'C' type from dual union all 5 select 12 mnt, 'C' type from dual 6 ) 7 select Max(case when type = 'D' then Sum(mnt) else null end) mntD, 8 Max(case when type = 'C' then Sum(mnt) else null end) mntC 9 from data 10 group by type 11 / MNTD MNTC ---------- ---------- 30 42
On peut économiser un aggrégat avec cette requête-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 WITH DATA AS ( SELECT 10 mnt, 'D' type FROM dual union ALL SELECT 20 mnt, 'D' type FROM dual union ALL SELECT 30 mnt, 'C' type FROM dual union ALL SELECT 12 mnt, 'C' type FROM dual ) SELECT sum(case when type = 'D' then mnt else 0 end) mntD, sum(case when type = 'C' then mnt else 0 end) mntC FROM DATA
Les réponses sont bonnes mais ça ne résout pas mon problème.J'ai d'autres champs à sélectionner dans d'autres tables.Exemple:
Select a.client,a.nom,b.mont,c.libelle,sum(d.mnt) mntD,sum(d.mnt) mntC
from table1 a,table2 b,table3 c,table4 d
where (conditions)
group by a.client,a.nom,b.mont,c.libelle
Ma version d'oracle est 9.2.0.5
Bonjour,
quel version oracle tu as ...
et combien tu as de lignes exactement ?
Partager