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