Ich habe so etwas wie die Struktur folgende Daten:SQL min/max-Gruppe durch Frage
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 Innen für jede min auf einer Unter Abfrage verknüpft und max Aussage scheint jedoch einige Datensätze auszuschließen:
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-konform sein sollte.
Schlagen Sie mich, es zu ...;) –
Da die Kategorie aufgrund der Gruppierung einzigartig sein wird, gibt es keine Notwendigkeit (redundant) entweder durch Zeit zu bestellen. –
Ja, indem Sie die korrekten Feldnamen in der Reihenfolge verwenden, indem Sie die Ergebnisse korrigieren. Ich schäme mich vor der Aufsicht. Danke, dass du mich darauf aufmerksam gemacht hast! –