Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1802 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] sommes sur un meme champs??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] sommes sur un meme champs??

n°1284811
bob_eponge
Posté le 16-01-2006 à 18:03:39  profilanswer
 

Salut salut,  :hello:  
 
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
mood
Publicité
Posté le 16-01-2006 à 18:03:39  profilanswer
 

n°1284904
moi23372
Posté le 16-01-2006 à 19:36:13  profilanswer
 

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 :D

n°1284969
bob_eponge
Posté le 16-01-2006 à 20:49:00  profilanswer
 

merci mais ca ne me va pas.
Je veux (enfin j'ai besoin de) la requete compliquée ;-)

n°1285013
Beegee
Posté le 16-01-2006 à 21:32:23  profilanswer
 

Oracle ? MySql ? SQL Server ?
 
Pour Oracle :
 

Code :
  1. SELECT date,
  2.        SUM(DECODE(type, 'credit', montant, 0)) as credit_total,
  3.        SUM(DECODE(type, 'debit', montant, 0)) as debit_total
  4. FROM tatable
  5. GROUP BY date;


 
Il y a des équivalents pour les autres SGBD (regarde du côté de CASE).

n°1285037
bob_eponge
Posté le 16-01-2006 à 21:48:28  profilanswer
 

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??

n°1285052
bob_eponge
Posté le 16-01-2006 à 21:54:54  profilanswer
 

pourquoi ca ca ne marche pas :

Code :
  1. select a.date,a.credit,b.debit
  2. (select date,sum(montant) as credit from test where type='credit' group by date) a
  3. left outer join
  4. (select date,sum(t.montant) as debit from test where type='debit' group by date) b
  5. on a.date=b.date

n°1285058
Beegee
Posté le 16-01-2006 à 21:56:42  profilanswer
 

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é).

n°1285062
bob_eponge
Posté le 16-01-2006 à 21:58:30  profilanswer
 

ok mais ca change rien,
mysql me dit que j'ai une erreur de syntaxe

n°1285066
bob_eponge
Posté le 16-01-2006 à 22:00:53  profilanswer
 

j'ai essayé avec la jointure classique

Code :
  1. select a.y1,a.s1,b.s2 from (select year(date) as y1,sum(montant) as s1 from test where type='credit' group by year(date))a ,
  2. (select year(date) as y2,sum(montant) as s2 from test where type='debit' group by year(date))b
  3. where y1=y2


 
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)


Message édité par bob_eponge le 16-01-2006 à 22:01:21
n°1285134
bob_eponge
Posté le 16-01-2006 à 22:49:44  profilanswer
 

il suffit d'utiliser la fonction case qui est du pure SQL et qui fait a peu pres comme la fonction decode de oracle


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] sommes sur un meme champs??

 

Sujets relatifs
[RESOLU]espace blanc sous ie[MySQL] Concaténation de champs [Résolu]
[résolu] bouton "ok" non cliquable dans un form si champs vides[PHP/MySQL] - Afficher plusieurs nom d'un champs qu'une ... (RESOLU)
[Access] Remplir les champs des formulaires en Access [Résolu]Problème de RecordSet avec des champs vides [Résolu merci drasche]
[RESOLU]rafraichir un champs de formulaire[SGBD résolu] Concaténation de 2 champs numériques dans une requête
[MySQL] le même champs, 2 fois dans la même requête - résolu 
Plus de sujets relatifs à : [RESOLU] sommes sur un meme champs??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR