Je suis en train de retourner des résultats répartis sur une période glissante de 12 mois par exemple:Résultats SQL groupe par mois
MONTH IN OUT
January 210 191
February 200 111
March 132 141
April 112 141
May 191 188
etc...
Comment puis-je diffuser les résultats sur une plage de dates, peuplant la première colonne du mois prénom?
EN MSSQL ce serait quelque chose comme:
SELECT COUNT(problem.problem_type = 'IN') AS IN,
COUNT(problem.problem_type = 'OUT') AS OUT,
DATEPART(year, DateTime) as Year,
DATEPART(month, DateTime) as Month
FROM problem
WHERE (DateTime >= dbo.FormatDateTime('2010-01-01'))
AND
(DateTime < dbo.FormatDateTime('2010-01-31'))
GROUP BY DATEPART(year, DateTime),
DATEPART(month, DateTime);
Mais ceci est contre une base de données Oracle afin DATEPART et DateTime ne sont pas disponibles.
Ma table problème est à peu près:
problem_ID Problem_type IN_Date OUT_Date
1 IN 2010-01-23 16:34:29.0 2010-02-29 13:06:28.0
2 IN 2010-01-27 12:34:29.0 2010-01-29 12:01:28.0
3 OUT 2010-02-13 13:24:29.0 2010-09-29 15:04:28.0
4 OUT 2010-02-15 16:31:29.0 2010-07-29 11:03:28.0
me battre de 30 secondes! –
Pourquoi ne pouvons-nous pas utiliser 'group by mon_year'? MySQL permet l'utilisation du nom de colonne d'alias dans la clause de groupe. –
@Scott Chu: Oracle n'autorise pas l'utilisation de l'alias de colonne dans la clause Group. Vous devez correspondre manuellement à l'expression utilisée dans la colonne. Le kilométrage peut varier avec d'autres DB. – ZeroK