sommes sur un meme champs?? [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 16-01-2006 à 19:36:13
SELECT date, type, sum(montant)
FROM tatable
GROUP BY date, type
ça te donnera
01/01/05 credit 1012
01/01/05 debit 5000
02/01/05 credit 512
02/01/05 debit 200
en quatre ligne. ça peut pas faire l'affaire, car sinon la requete deviendra compliqué pour avoir une colonne débit et une colonne crédit
Marsh Posté le 16-01-2006 à 20:49:00
merci mais ca ne me va pas.
Je veux (enfin j'ai besoin de) la requete compliquée ;-)
Marsh Posté le 16-01-2006 à 21:32:23
Oracle ? MySql ? SQL Server ?
Pour Oracle :
Code :
|
Il y a des équivalents pour les autres SGBD (regarde du côté de CASE).
Marsh Posté le 16-01-2006 à 21:48:28
ok merci ca marche pour oracle
mais il n'y a rien qui permettrait de le faire en pure SQL, sans utiliser les option de tel ou tel sgbd??
Marsh Posté le 16-01-2006 à 21:54:54
pourquoi ca ca ne marche pas :
Code :
|
Marsh Posté le 16-01-2006 à 21:56:42
Une jointure externe simple ne marche pas, car tu ne va pas pouvoir prendre en compte certains jours où un seul le montant est non nul (d'un type seulement).
Il faut faire une jointure externe double, FULL OUTER JOIN (plus ou moins supporté).
Marsh Posté le 16-01-2006 à 21:58:30
ok mais ca change rien,
mysql me dit que j'ai une erreur de syntaxe
Marsh Posté le 16-01-2006 à 22:00:53
j'ai essayé avec la jointure classique
Code :
|
et la ca marche bien, mais comme tu me l'a précisé, ca ne marche que si j'ai un element credit et debit pour chaque ligne.
(dans cette requete j'ai regroupé par année mais ca ne change pa le princie)
Marsh Posté le 16-01-2006 à 22:49:44
il suffit d'utiliser la fonction case qui est du pure SQL et qui fait a peu pres comme la fonction decode de oracle
Marsh Posté le 16-01-2006 à 18:03:39
Salut salut,
J'ai un gros probleme de requete, je vais vous montrer par l'exemple ca ira plus vite.
Ma table contient
date montant type
01/01/05 1000 credit
02/01/05 500 credit
02/01/05 200 debit
01/01/05 2000 debit
01/01/05 3000 debit
01/01/05 12 credit
02/01/05 12 credit
et je cherche une requete qui me retourne ca:
date credit debit
01/01/05 1012 5000
02/01/05 512 200
mais je suis incapable de soritr la requete sql
Merci de votre aide
Message édité par bob_eponge le 16-01-2006 à 22:50:19