sql-server - 如何为每个 ID 选择第 n 行?

标签 sql-server

如何为每个 ID 选择所有第 n 行? 我的 table 看起来有点像这样:

    ID  fName   data
     1  Hari    20
     1  Hari    30
     2  John    89
     2  John    38
     2  John    55

在这种情况下,您如何为每个 ID 选择所有第二行?

结果是这样的:

    ID  fName   data
     1  Hari    30
     2  John    38 

最佳答案

这对 SQL SERVER 2012 有帮助:

SELECT ID,  FNAME,   DATA FROM 
(
     SELECT TEST_DATA.*, 
     ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ORDER_BY_CONDITION) AS RANK
     FROM TEST_DATA
) T 
WHERE T.RANK=2

根据条件更改您的订单(相应地 ORDER_BY_CONDITION

此处为 SQL SERVER 2012 的 fiddle :http://sqlfiddle.com/#!6/f59a1/3

编辑:对于多个表,您可以像在 fiddle 中一样尝试使用 CTE:http://sqlfiddle.com/#!6/8a5b1d/10

关于sql-server - 如何为每个 ID 选择第 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034306/

相关文章:

sql-server - 通过sql server连接传递租户id

sql-server - 如何使用powershell将用户添加到SQL Server角色?

sql - View 包含不精确或不确定的转换?

sql-server - 如何重命名物理数据库文件

sql - 如何添加仅具有一组值选择的列?

c# - 将数据库从 C# 部署到 Sql Azure

sql - 如何使用 sql server management studio 将 blob 插入数据库

sql - 从地址获取街道名称和公寓号

sql-server - SQL Server 过程超时

SQL 使用内连接将不存在的行的聚合值设为 0