Sql Query为列中具有相同值的每个条目返回3行?

时间:2016-10-20 09:26:49

标签: sql sql-server

好的,我在这里对SQL查询有一点做法,我有一个包含数千个条目的表。 每行都有一个唯一的Id,但是有一个名为EquipmentId的列,它不是唯一的,可以存在于多行中。我想为每个EquipmentId返回3行,如果少于3个EntryID,我也想要那些。 ..... 合理 ?提前谢谢。

2 个答案:

答案 0 :(得分:2)

使用ROW_NUMBER() + CTE

;WITH CTE AS(
     SELECT *,
            ROW_NUMBER() OVER ( PARTITION BY EquipmentId  ORDER BY ID ) RN
     FROM TableName
)
SELECT * 
FROM CTE
WHERE RN <= 3 
ORDER BY EquipmentId    

答案 1 :(得分:0)

使用子查询可以这样做:

SELECT * 
FROM
    (SELECT *, Rank() 
     OVER 
         (PARTITION BY equipmentid
          ORDER BY ID) Rank
     FROM stack) AS a 
WHERE
    rn <= 3