通过使用其他列在组中的选择查询中包括其他列

时间:2019-10-24 08:37:19

标签: sql tsql group-by

我需要一些有关SQL查询的帮助。

给出下表:

+---+------+--------------+
|  ID  |  Team  |  Year   |
--------------------------+
|  1   |   A    |  2018   |
|  1   |   B    |  2015   |
|  1   |   C    |  2013   |
|  2   |   A    |  2019   |
|  2   |   B    |  2018   |
|  3   |   A    |  2017   |
|  3   |   D    |  2018   |
---------------------------

如何使用MIN(Year)按ID对这些行进行分组以获得以下结果:

+---+------+--------------+
|  ID  |  Team  |  Year   |
--------------------------+
|  1   |   C    |  2013   |
|  2   |   B    |  2018   |
|  3   |   A    |  2017   |
---------------------------

我正在使用TSQL。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用相关子查询

    select a.* from table a
    where a.year = (
        select min(year) from table b where a.id=b.id
    )

或rownumber()

    select a.* from (
        select * , row_number() over(partition by id order by year) rn from table_name
    ) as a
    where a.rn=1