Ich versuche, einige Ergebnisse verteilt über einen Zeitraum von 12 Monaten Roll zB zurückzukehren:SQL Ergebnisse Gruppe von Monat
MONTH IN OUT
January 210 191
February 200 111
March 132 141
April 112 141
May 191 188
etc...
Wie kann ich die Ergebnisse über einen Zeitraum verteilt, die erste Spalte mit dem Monat bevöl Name?
IN MSSQL wäre es so etwas wie:
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);
Aber das ist für eine Oracle-Datenbank so Datepart und Datetime nicht verfügbar ist.
Mein Problem Tabelle ist ungefähr:
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
mich schlagen um 30 Sekunden! –
Warum können wir 'group by mon_year' nicht verwenden? MySQL erlaubt die Verwendung von Alias-Spaltennamen in Gruppenklauseln. –
@Scott Chu: Oracle lässt die Verwendung von Spaltenaliasnamen in der Gruppenklausel nicht zu. Sie müssen den in der Spalte verwendeten Ausdruck manuell anpassen. Die Laufleistung kann mit anderen DBs variieren. – ZeroK