代码之家  ›  专栏  ›  技术社区  ›  Revathi Vijay

如何根据SQL Server中的catgory_id从表中选择每个前1个值

  •  1
  • Revathi Vijay  · 技术社区  · 6 年前

    如何从表中选择前1个值 category_id ?

    我有一张这样的桌子。请帮帮我。

    表1

    ID Name category_id
    -------------------
     1  A       1
     2  B       1
     3  c       1
     4  d       2
     5  e       2
     6  f       2
     7  g       3
     8  h       3
     9  i       3 
    

    如何从表1中获得下面提到的输出?

    ID Name category_id
    --------------------
     1  A     1
     4  d     2
     7  g     3  
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Chanukya    6 年前
    CREATE TABLE #Table1
        ([ID] int, [Name] varchar(1), [catgory_id] int)
    ;
    
    INSERT INTO #Table1
        ([ID], [Name], [catgory_id])
    VALUES
        (1, 'A', 1),
        (2, 'B', 1),
        (3, 'c', 1),
        (4, 'd', 2),
        (5, 'e', 2),
        (6, 'f', 2),
        (7, 'g', 3),
        (8, 'h', 3),
        (9, 'i', 3)
    ;
    
    SELECT [ID], [Name], [catgory_id]
    FROM (
        SELECT *
            ,ROW_NUMBER() OVER (
                PARTITION BY [CATGORY_ID] ORDER BY [ID]
                ) AS RN
        FROM #TABLE1
        ) A
    WHERE RN = 1
    

    输出

    ID  Name    catgory_id
    1   A         1
    4   d         2
    7   g         3
    
        2
  •  2
  •   Stanislav Kundii    6 年前
    SELECT TOP 1 WITH TIES [ID], [Name], [catgory_id]
    FROM #Table1
    ORDER BY 
        ROW_NUMBER() OVER (
                PARTITION BY [CATGORY_ID] ORDER BY [ID] )