【发布时间】:2012-08-15 09:16:17
【问题描述】:
如果我有一个包含以下字段的表格
ID, SomeFK, SomeTime
我将如何编写查询以返回每个 SomeFK 的最新/前 3 项(基于 SomeTime)。
所以,结果可能看起来像
SomeFK Sometime
0 2012-07-05
0 2012-07-04
0 2012-07-03
1 2012-07-03
1 2012-07-02
1 2012-07-01
2 2012-07-03
2 2012-07-02
2 2012-07-01
....etc....
返回特定SomeFK 的最新项目很容易,但我只是想不出如何为上述内容执行此操作。我也觉得应该很简单!
编辑:
抱歉,我错过了一些关键信息。这是针对SQL2000的,所以ROW_NUMBER()不能用!
【问题讨论】:
-
请参阅此处的"solution based on concatenation" 部分,了解一种适用于 2000 年的方法。
-
@MartinSmith 你能在 2000 年使用 CTE 吗?
-
@podiluska - 不,它们仅适用于 2005 年以上。不过,您可以使用派生表。实际上刚刚意识到较早的链接不适合,因为仅适用于 N=1。 Another 2000 method is here
-
最后一个链接对我有用。
标签: sql sql-server sql-server-2000 greatest-n-per-group