如何根据SQL中三列的组合select取最大值

how to select max value according to the combination of three columns in SQL

我正在处理一个查询并陷入其中。

我这里有一个示例数据

Name   Main_Model    Sub_Model     Sub_Sub_Model
===============================================
Ver1    1             0               0
ver2    1             0               0
ver1    1             2               0
ver2    1             1               0
ver1    2             0               0
ver2    1             1               1
ver1    2             2               1

根据这些数据,我必须 select 最大型号。例如

版本 1 的最大型号,即 ver1 是

 Name   Main_Model    Sub_Model     Sub_Sub_Model
 ===============================================
 Ver1    2            2               1

对于版本 2,它将是

 Name   Main_Model    Sub_Model     Sub_Sub_Model
 ===============================================
 Ver2    1            1               1

我试过内连接但没有成功。我真的很困惑它的逻辑。 请指导,以便我完成此任务。

谢谢

使用 window 函数对行进行排名并获得排名 1:

;with cte as(select *, row_number() over(partition by name
                                         order by main_model desc, 
                                                  sub_model desc,
                                                  sub_sub_model desc) rn
             from table)
select * from cte
where rn = 1

使用ROW_NUMBER对每一行进行排名:

;WITH cte AS
    (
        SELECT      Name, Main_Model, Sub_Model, Sub_Sub_Model
                    rn = ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Main_Model DESC, Sub_Model DESC, Sub_Sub_Model DESC)
        FROM        my_table
    )

SELECT  *
FROM    cte
WHERE   rn = 1