代码之家  ›  专栏  ›  技术社区  ›  Shantanu Rauthan

仅选择满足指定条件的组的前两行

  •  0
  • Shantanu Rauthan  · 技术社区  · 3 年前

    我的表格结构:

    ID   Name   Code
    ----------------
    124  John   ABC
    456  Jake   YQA
    857  James  ABC
    745  Jones  IUJ
    878  Jared  YQA
    989  Jimmy  HIJ
    900  Jess   ABC
    988  Jessi  YQA
    

    诸如此类。。。。。。

    我想选择代码为ABC和YQA的前两行

    我需要如下输出:

    ID   Name   Code
    ----------------
    124  John   ABC
    857  James  ABC
    456  Jake   YQA
    878  Jared  YQA
    

    简单地说,既然我是新手,请

    3 回复  |  直到 3 年前
        1
  •  2
  •   Tim Biegeleisen    3 年前

    使用 ROW_NUMBER() ,并为选择最早的2条记录 ABC YQA 代码,按顺序 ID .

    WITH cte AS (
        SELECT t.*, ROW_NUMBER() OVER (PARTITITON BY Code ORDER BY ID) rn
        FROM yourTable t
        WHERE Code IN ('ABC', 'YQA')
    )
    
    SELECT ID, Name, Code
    FROM cte
    WHERE rn <= 2
    ORDER BY Code, Id;
    
        2
  •  0
  •   dmg    3 年前

    使用row_number

     with t as 
        (select *, 
             row_number()  over (partition by survey) as idx 
         from table 
         where code in ('ABC','YQA')) 
    select id, name, code from t where idx < 3;