我有类似以下数据结构的东西:
类别开始日期时间结束日期时间 ================================================ 1 2009 年 12 月 1 日 12:00 2009 年 12 月 1 日 12:12 1 2009 年 12 月 1 日 04:00 2009 年 12 月 1 日 04:20 2 2009 年 12 月 2 日 10:15 2009 年 12 月 2 日 10:22 2 2009 年 12 月 2 日 11:00 2009 年 12 月 2 日 11:01
我想要每个类别的最小 StartDateTime 和最大 EndDateTime。像这样:
类别 MinStartDateTime MaxEndDateTime ================================================ 1 2009 年 12 月 1 日 12:00 2009 年 12 月 1 日 04:20 2 2009 年 12 月 2 日 10:15 2009 年 12 月 2 日 11:01
使用按类别分组的 min & max 似乎不起作用:
select
Category,
min(StartDateTime) [MinStartDateTime],
max(EndDateTime) [MaxDateTime]
from
MyTable
group by
Category
order by
Category,
StartDateTime,
EndDateTime
我还为每个 min 和 max 语句在子查询上尝试了两个内部连接,但是它似乎排除了一些记录:
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
有任何想法吗?该数据库是 Sybase ASE,它应该符合 SQL-92。