仅显示Microsoft SQL Server组中的第一行

仅显示Microsoft SQL Server组中的第一行,sql,sql-server,Sql,Sql Server,我希望始终只选择ID2中最低的数字,并按ID1分组 表: | ID1 | ID2 | Name | Phone | | 1 | 1 | Max | 123 | | 1 | 2 | Ben | 254 | | 1 | 3 | Robert | 541 | | 2 | 1 | Andy | 515 | | 2 | 2 | Carl | 631 | 这是我想要的输出: | ID1 | Name | Phone

我希望始终只选择ID2中最低的数字,并按ID1分组

表:

| ID1 | ID2 |  Name  | Phone |
|  1  |  1  | Max    |  123  |
|  1  |  2  | Ben    |  254  |
|  1  |  3  | Robert |  541  |
|  2  |  1  | Andy   |  515  |
|  2  |  2  | Carl   |  631  |
这是我想要的输出:

| ID1 |  Name   | Phone |
|  1  |  Max    |  123  |
|  2  |  Andy   |  515  |

有人能帮我正确查询microsoft sql server吗…?

您可以使用CTE和排序功能,如
行数

WITH CTE AS
(
    SELECT ID1, ID2,  Name, Phone,
           RN = ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY ID2 ASC)
    FROM dbo.TableName
)
SELECT ID1, ID2,  Name, Phone 
FROM CTE WHERE RN = 1

您可以使用CTE和排序功能,如
行数

WITH CTE AS
(
    SELECT ID1, ID2,  Name, Phone,
           RN = ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY ID2 ASC)
    FROM dbo.TableName
)
SELECT ID1, ID2,  Name, Phone 
FROM CTE WHERE RN = 1

您可以使用CTE和排序功能,如
行数

WITH CTE AS
(
    SELECT ID1, ID2,  Name, Phone,
           RN = ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY ID2 ASC)
    FROM dbo.TableName
)
SELECT ID1, ID2,  Name, Phone 
FROM CTE WHERE RN = 1

您可以使用CTE和排序功能,如
行数

WITH CTE AS
(
    SELECT ID1, ID2,  Name, Phone,
           RN = ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY ID2 ASC)
    FROM dbo.TableName
)
SELECT ID1, ID2,  Name, Phone 
FROM CTE WHERE RN = 1