SQL min / max-Gruppe durch Frage
-
11-09-2019 - |
Frage
Ich habe so etwas wie die folgende Datenstruktur:
Category StartDateTime EndDateTime =============================================== 1 12/1/2009 12:00 12/1/2009 12:12 1 12/1/2009 04:00 12/1/2009 04:20 2 12/2/2009 10:15 12/2/2009 10:22 2 12/2/2009 11:00 12/2/2009 11:01
Ich möchte die min und max Startdate EndDateTime für jede Kategorie. Wie folgt aus:
Category MinStartDateTime MaxEndDateTime =============================================== 1 12/1/2009 12:00 12/1/2009 04:20 2 12/2/2009 10:15 12/2/2009 11:01
Mit min & max mit einer Gruppe nach Kategorie scheint nicht zu funktionieren:
select
Category,
min(StartDateTime) [MinStartDateTime],
max(EndDateTime) [MaxDateTime]
from
MyTable
group by
Category
order by
Category,
StartDateTime,
EndDateTime
Ich habe auch versucht, zwei auf einer Unterabfrage für jede min und max Aussage Innen verbindet, aber es scheint, einige Datensätze werden mit Ausnahme von:
select distinct
T1.Category,
T1.StartDateTime [MinStartDateTime],
T1.EndDateTime [MaxEndDateTime]
from
MyTable T1
inner join
(select
Category,
min(StartDateTime) [MinStartDateTime]
from
MyTable
group by
Category) T2
on T2.Category = T1.Category and T2.MinStartDateTime = T1.StartDateTime
inner join
(select
Category,
max(EndDateTime) [MaxEndDateTime]
from
MyTable
group by
Category) T3
on T3.Category = T1.Category and T3.MaxEndDateTime = T1.EndDateTime
order by
T1.Category,
T1.encodeStartDateTime,
T1.encodeEndDateTime
Irgendwelche Ideen? Die Datenbank ist Sybase ASE, die SQL-92-kompatibel sein soll.
Lösung
Ihre erste Lösung sieht richtig mit Ausnahme der order by-Klausel; versuchen:
select
Category,
min(StartDateTime) [MinStartDateTime],
max(EndDateTime) [MaxDateTime]
from MyTable
group by
Category
order by
Category,
MinStartDateTime,
MaxDateTime
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow