Regroupage tableau par mois et par année en SQL - SQL/NoSQL - Programmation
Marsh Posté le 02-04-2014 à 14:14:50
Dommage la requête serait un minimum indenté, j'aurais pris la peine de regarder.
Marsh Posté le 02-04-2014 à 15:09:21
Peut être que sous ce format ça va vous inciter à m'aider, comme je l'ai dit je débute!!!!
D'avance merci
Marsh Posté le 02-04-2014 à 16:15:37
Quel SGBD?
A voir ton "group by mois" a la fin de ta requete, je pense que tu voulais plus faire quelque chose comme ca:
Select mois, MAX(CA2013), MAX(CA2014) From |
La facon dont ta requete initiale est ecrite fait que le "group by" s'applique seulement a la deuxieme requete de l'union plutot qu'a l'ensemble (enfin je pense) ce qui explique pourquoi tu obtiens toujours deux lignes pour Janvier.
Sinon autre option, passer les requetes en sous-requetes dans une clause SELECT (le "FROM dual" c'est du Oracle, a adapter si pas Oracle):
Select 'Janvier' as mois, |
Marsh Posté le 02-04-2014 à 16:37:42
Not bad, je ne connaissais pas la technique du dual
Sinon il y a les fonctions analytiques, un bon p'tit rollup.
Par contre pas assez pratiqué, donc je ne m'y risquerais pas à faire une démo ^^ (c'est surtout qu'il est presque 17h )
Marsh Posté le 03-04-2014 à 07:51:27
Bonjour,
Malheureusement mon logiciel me dit que la requête sql n'est pas correcte
Marsh Posté le 03-04-2014 à 10:23:15
laurent5711 a écrit : Bonjour, |
.....
On est plus dans une contrainte SQL là mais logiciel.
Et quel logiciel utilises-tu ?
Marsh Posté le 02-04-2014 à 12:54:51
Bonjour,
J'essaie desespérément établir un tableau regroupant les CA par mois et par année. Ma requette est la suivante:
Select 'Janvier' as mois, CAST(Sum(TTC_Montant - TVA_Montant) As Decimal(4,4)) AS CA2013, 0.0 AS CA2014
From
Documents
Where
FastFilter <> 0 And Removed <> 1 and
(2013) = EXTRACT(YEAR FROM IF(NoFact = '' THEN (IF(NoLivr = '' THEN DateCmde Else DateLivr)) ELSE DateFact)) and
(01)=EXTRACT(Month FROM IF(NoFact = '' THEN (IF(NoLivr = '' THEN DateCmde Else DateLivr)) ELSE DateFact))
union
Select 'Janvier' as mois, 0.0 AS CA2013, CAST(Sum(TTC_Montant - TVA_Montant) As Decimal(4,4)) AS CA2014
From
Documents
Where
FastFilter <> 0 And Removed <> 1 and
(2014) = EXTRACT(YEAR FROM IF(NoFact = '' THEN (IF(NoLivr = '' THEN DateCmde Else DateLivr)) ELSE DateFact)) and
(01)=EXTRACT(Month FROM IF(NoFact = '' THEN (IF(NoLivr = '' THEN DateCmde Else DateLivr)) ELSE DateFact))
Group by mois
et j'obtiens:
une ligne Janvier, mon CA de janvier 2013 puis 0
une seconde ligne Janvier, 0 puis mon CA janvier 2014
Comment puis-je faire en sorte d'obtenir une ligne contatena tjanvier mon CA janvier 2013 et mon CA janvier 2014
Je débute en SQL....
D'avance merci
Message édité par laurent5711 le 02-04-2014 à 15:08:54