以最多(日期)分组

以最多(日期)分组

我想列出一张桌子上每列火车的最新目的地(最大起飞时间),例如:

Train    Dest      Time

1        HK        10:00

1        SH        12:00

1        SZ        14:00

2        HK        13:00

2        SH        09:00

2        SZ        07:00

预期的结果应该是:


Train    Dest      Time

1        SZ        14:00

2        HK        13:00

我试过用


SELECT Train, Dest, MAX(Time)

FROM TrainTable

GROUP BY Train

我得到了一个“or-00979而不是按表达式分组”的错误,说我必须通过语句将‘Dest’包括在我的组中。但这肯定不是我想要的.。


在一行SQL中可以这样做吗?


天涯尽头无女友
浏览 457回答 3
3回答

慕盖茨4494581

SELECT train, dest, time FROM (    SELECT train, dest, time,      RANK() OVER (PARTITION BY train ORDER BY time DESC) dest_rank    FROM traintable  ) where dest_rank = 1

慕沐林林

下面是一个只使用左联接的例子,我认为它比其他任何组都更有效:ExchangeCore博客SELECT&nbsp;t1.*FROM&nbsp;TrainTable&nbsp;t1&nbsp;LEFT&nbsp;JOIN&nbsp;TrainTable&nbsp;t2ON&nbsp;(t1.Train&nbsp;=&nbsp;t2.Train&nbsp;AND&nbsp;t1.Time&nbsp;<&nbsp;t2.Time)WHERE&nbsp;t2.Time&nbsp;IS&nbsp;NULL;
打开App,查看更多内容
随时随地看视频慕课网APP