SQL中每个相同数据的前2行

时间:2015-01-02 05:13:40

标签: sql sql-server partition

这是面试问题。 假设我有一张桌子和一张桌子。在该表中只有一列。

   Details

    a
    a
    a
    a
    b
    b
    b
    c
    d
    d
    d 

这是数据。现在我想要每个小组的前2名。

Details
a
a
b
b
c
d
d

如何得到这个结果。

1 个答案:

答案 0 :(得分:4)

使用Window Function获取每组中的前两行

SELECT Details
FROM   (SELECT *,
               Row_number()OVER(partition BY Details ORDER BY Details) rn
        FROM   tablename) a
WHERE  rn <= 2 

注意:order by根据您的要求将订单更改为AscDesc