从最大字段

时间:2017-07-25 17:28:37

标签: sql teradata

我有一个表结构,其列类似于以下内容:

ID | line | value
1  |  1   | 10
1  |  2   | 5
2  |  1   | 6
3  |  1   | 7
3  |  2   | 4

理想情况下,我想提出以下内容:

ID | value
1 | 5
2 | 6
3 | 4

一种解决方案是执行以下操作:

select a.ID, a.value
from
myTable a
inner join (select id, max(line) as line from myTable group by id) b
    on a.id = b.id and a.line = b.line

考虑到桌子的大小,这只是一个更大的拉动的一部分,我想看看是否有更优雅/更简单的方式直接拉动它。

1 个答案:

答案 0 :(得分:2)

这是OLAP功能的任务:

select *
from myTable a
qualify
   rank()  -- assign a rank for each id
   over (partition by id
         order by line desc) = 1

如果每个ID共享相同的最大行,则可能会返回多行。如果您只想返回其中一个,请在order by添加另一列以使其唯一,或切换到row_number以获得不确定的行。