根据SQL Server相邻列上的特定条件获取整行

时间:2018-09-09 17:30:34

标签: sql sql-server select top-n

我的桌子

integer   | party   | value | and many more columns
----------+---------+-------+----------------------
 1        | abc     |  40   | -----
 1        | abc     |  90   | -----
 2        | pqr     |  12   | -----
 1        | abc     | 120   | -------
 2        | pqr     |  86   | --------

以此类推

我希望检索整行,该行具有最大值

上表的示例输出

1    abc    120
2    pqr     86

对于一个特定的独立聚会,我希望获取具有最大价值的行。

2 个答案:

答案 0 :(得分:1)

您可以使用rank窗口函数查找每个参与方的“最大”行:

SELECT 
    id, party, value
FROM
    (SELECT 
         id, party, value, 
         RANK() OVER (PARTITION BY party ORDER BY value DESC) AS rk
     FROM   
         mytable) t
WHERE  
    rk = 1

答案 1 :(得分:0)

使用简单的聚合函数MAX(),假设整数是一个id列

select id,party, max(value) as max_val from your_table
group by id,party