SQL
Citation de John Doe le 27 septembre 2005, 17 h 00 minbonjour à tous,
j'ai un problème avec la requête suivante :
select a.mat,
decimal(sum(a.z13), 11, 2) as debit,
decimal(sum(b.z13), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.mat
le problème est le suivant :
le total DEBIT est = au total débit "normal" multiplié par le nombre de lignes "crédit"; et inversement pour le crédit !!!
ou me suis-je trompé ?
Merci d'avance.
bonjour à tous,
j'ai un problème avec la requête suivante :
select a.mat,
decimal(sum(a.z13), 11, 2) as debit,
decimal(sum(b.z13), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.mat
le problème est le suivant :
le total DEBIT est = au total débit "normal" multiplié par le nombre de lignes "crédit"; et inversement pour le crédit !!!
ou me suis-je trompé ?
Merci d'avance.
Citation de John Doe le 30 septembre 2005, 13 h 30 minsalut,
Il faut "isoler" les zones debit et credit pour en faire la somme.. utiliser l'ordre CASE :select a.mat,
decimal(sum( case when a.dtcr = 'D' then a.z13 else 0 end), 11, 2) as debit,
decimal(sum( case when a.dtcr = 'C' then a.z13 else 0 end), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.matvoilà
christian----- Message d'origine -----
bonjour à tous,
j'ai un problème avec la requête suivante :
select a.mat,
decimal(sum(a.z13), 11, 2) as debit,
decimal(sum(b.z13), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.mat
le problème est le suivant :
le total DEBIT est = au total débit "normal" multiplié par le nombre de lignes "crédit"; et inversement pour le crédit !!!
ou me suis-je trompé ?
Merci d'avance.
salut,
Il faut "isoler" les zones debit et credit pour en faire la somme.. utiliser l'ordre CASE :
select a.mat,
decimal(sum( case when a.dtcr = 'D' then a.z13 else 0 end), 11, 2) as debit,
decimal(sum( case when a.dtcr = 'C' then a.z13 else 0 end), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.mat
voilà
christian
----- Message d'origine -----
bonjour à tous,
j'ai un problème avec la requête suivante :
select a.mat,
decimal(sum(a.z13), 11, 2) as debit,
decimal(sum(b.z13), 11, 2) as credit,
decimal(sum(a.z13 - b.z13), 11, 2) as solde
from pattcmc a
join pattcmc b
on a.mat = b.mat
where a.dtcr ='D' and b.dtcr ='C'
group by a.mat
le problème est le suivant :
le total DEBIT est = au total débit "normal" multiplié par le nombre de lignes "crédit"; et inversement pour le crédit !!!
ou me suis-je trompé ?
Merci d'avance.
Citation de John Doe le 3 octobre 2005, 9 h 37 minbonjour,
j'obtiens exactement le même résultat qu'avec la requête initiale; cela étant, j'ai trouvé une solution plus "simple" qui fonctionne parfaitement; je la colle ci-après au cas où cela peut intéresser .
Merci encore .
select mat,
decimal(sum( case when dtcr = 'D'
then z13 else 0 end) , 11, 2 )
as debit,
decimal(sum( case when dtcr = 'C' then z13 else 0 end), 11, 2)
as credit ,
decimal(sum(case when dtcr='D' then Z13 else z13 *-1 end), 11, 2)
as solde
from pattcmc
group by mat
bonjour,
j'obtiens exactement le même résultat qu'avec la requête initiale; cela étant, j'ai trouvé une solution plus "simple" qui fonctionne parfaitement; je la colle ci-après au cas où cela peut intéresser .
Merci encore .
select mat,
decimal(sum( case when dtcr = 'D'
then z13 else 0 end) , 11, 2 )
as debit,
decimal(sum( case when dtcr = 'C' then z13 else 0 end), 11, 2)
as credit ,
decimal(sum(case when dtcr='D' then Z13 else z13 *-1 end), 11, 2)
as solde
from pattcmc
group by mat