首页 > 解决方案 > 在另一列中查找最高行号的对应行值

问题描述

我有一张类似于下面这张的表格。我想创建 New_Column 来查找所选日期的最大数字,并返回日期,同时为所有其他数字返回 null。我正在考虑添加一个案例,但不知道如何合并它。

Date         Number   New_Column
2021-03-18     1          null
2021-03-18     8          null
2021-03-18     20       2021-03-18
2021-04-18     1          null
2021-04-18     7          null
2021-04-18     11      2021-04-18   

标签: sql

解决方案


您可以使用窗口函数:

select t.*,
       (case when number = max(number) over (partition by date)
             then date
        end) as new_column
from t;

注意:如果有最高值的平局并且您只想标记一个

select t.*,
       (case when row_number() over (partition by date order by number desc) = 1
             then date
        end) as new_column
from t;

推荐阅读