当前位置: 首页 > 面试题库 >

查询以返回每个不同列值的头项

饶滨海
2023-03-14
问题内容

如果我有一个包含以下字段的表格

ID, SomeFK, SomeTime

我将如何编写查询以返回每个的最新/前3个项目(基于SomeTimeSomeFK

因此,结果可能看起来像

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()无法使用!


问题答案:
SELECT SomeFk, SomeTime 
FROM 
    (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY SomeFK ORDER BY sometime desc) rn
    FROM yourtable
    ) v
WHERE rn<=3
ORDER BY somefk, rn

对于SQL 2000,我建议升级到受支持的平台。

但是如果你坚持的话。

select *
from yourtable t1
where
    (select COUNT(*)
     from yourtable
     where somefk = t1.somefk
     and sometime>=t1.sometime
    ) <=3


 类似资料:
  • 问题内容: 我有一个汽车表,其中包含汽车清单。表结构如下所示: 我想要一个查询,该查询返回每个品牌的10辆汽车。 等效于以下伪代码的内容: 这是我尝试失败的结果: -–每次返回仅返回一条记录。 这将返回每条记录。 我每辆汽车只需要10条记录。 谢谢你的帮助 问题答案: 这将给您您想要的: 要更改获取 哪 10行的选择,请更改最内层查询的顺序;我选择了id ,但您可以选择年份。只要是第一次,它将起作

  • 按查询排序返回不同的排序,为什么? 结果: 为什么?

  • 问题内容: 如何获取使用SQL Server的SQL查询返回的列数? 例如,如果我有如下查询: 它应该返回表A1中的总列数+表A2中的总列数。但是查询可能会更复杂。 问题答案: 这是一种方法: 您可以通过创建视图来执行类似的操作。

  • 问题内容: 我的查询导致以下错误: 消息512,级别16,状态1,过程Item_insupd,第17行 子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。 询问: 我怀疑这种情况的发生是因为我的子查询不包含,但是不幸的是,我不知道如何构造正确的子句。 问题答案: 我怀疑问题出在此字符串中(您的代码中的第26行): 看起来像返回多个行,所以您遇到了错

  • 问题内容: 我有一个带有文档条目的父表,还有一个历史记录表,每次用户访问其中一个文档时,该表都会记录一个审计条目。 我正在编写一个搜索查询,以返回具有最新用户ID的文档列表(按各种条件过滤),以访问结果集中返回的每个文档。 因此对于 我希望从搜索中获得回报,例如 我可以轻松地通过一个SQL查询以及两个表之间的联接来做到这一点吗? 问题答案: 修改Andy White产生的内容,并用DB2(和ISO

  • 在我的Android项目中,我使用Room库来处理SQLite数据库。我使用我的数据库来保存国家电话代码。我的数据库预加载了两个国家(watch大众数据库与国家代码(道:电话代码道)功能); 国家代码实体 DAO接口 在我的应用程序中,我按顺序选择国家代码(观察函数selectCountryCodeByOrder(order:Int):Int)。我在异步{}协同例程中异步调用此函数。但我有一个相当