代码之家  ›  专栏  ›  技术社区  ›  Sam Saffron James Allen

使用SQL按顺序查找n个元素

  •  6
  • Sam Saffron James Allen  · 技术社区  · 15 年前

    给出下表:

    Sequence    Tag
    -----       ----
    1           a
    2           a
    3           a
    88          a
    100         a
    1           b
    7           b
    88          b
    101         b
    

    我想要一个返回每个标记序列(按标记排序,序列asc)中第4个的查询:

    Tag         4thInSequence
    -----       --------
    a           88
    b           101
    

    我在这里可以使用的最有效的SQL是什么?(注意:允许使用SQL Server 2008技巧)

    1 回复  |  直到 15 年前
        1
  •  8
  •   Bill Karwin    15 年前
    WITH Enumerated AS (
      SELECT *, ROW_NUMBER() OVER (PARTITION BY Tag ORDER BY Sequence) AS RN 
      FROM MyTable
    )
    SELECT * FROM Enumerated WHERE RN = 4;