J'ai quelque chose comme la structure de données suivantes:groupe SQL min/max en question
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
Je veux que le min et max StartDateTime EndDateTime pour chaque catégorie. Comme ceci:
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
En utilisant min & max avec un groupe par catégorie ne semble pas fonctionner:
select
Category,
min(StartDateTime) [MinStartDateTime],
max(EndDateTime) [MaxDateTime]
from
MyTable
group by
Category
order by
Category,
StartDateTime,
EndDateTime
J'ai aussi essayé deux jointures internes sur une sous-requête pour chaque min et max déclaration , mais il semble exclure certains enregistrements:
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
Des idées? La base de données est Sybase ASE qui devrait être conforme à SQL-92.
me devança ...;) –
Depuis la catégorie sera unique en vertu du groupement, il n'y a pas lieu d'ordonner (redondance) soit par le temps. –
Oui, en utilisant les noms de champs corrects dans l'ordre en corrigeant les résultats. Je suis gêné par l'oubli. Merci d'avoir attiré mon attention! –