从每个组中选择前N行

时间:2018-07-02 18:42:15

标签: sql-server-2008 sql-server-2012

从每个组中选择前N行,应返回该组的第一行。

[示例行][1]

在上面的附件图像中,显示1、3和4行。如何获得这个,你能帮忙

1 个答案:

答案 0 :(得分:0)

尝试一下。将MyTable替换为您的表名。该查询将返回前2个。由于您没有提到要返回前N个记录的顺序,因此我使用了GROUP_Row_ID进行排序。您可以根据需要进行更改。

DECLARE @n INT = 2;
SELECT *
FROM   (   SELECT * ,
                  ROW_NUMBER() OVER ( PARTITION BY AlternativeId
                                      ORDER BY GROUP_Row_ID ) AS rn
           FROM   MyTable ) t
WHERE  t.rn <= @n;