根据其他列获取值

问题描述

我在 sql 中有以下数据。

NAME,DATE,REF


Pat1,2021-07-15,5072

'',NULL,5072

Pat2,5073

有没有办法使用 SELECT QUERY 来根据 REF 值替换 DATE 列中的 NULL 值?

比如将 NULL 值替换为匹配 REF 值的第一个可用日期,而不对数据库进行任何更改。

预期结果

NAME,REF




Pat1,5073

解决方法

您可以使用 MAX() 窗口函数:

SELECT NAME,COALESCE(DATE,MAX(DATE) OVER (PARTITION BY REF)) DATE,REF
FROM tablename 

参见demo

,

有一个派生表(子查询)来返回每个引用的日期。 JOIN

select t1.NAME,t2.date,t1.REF
from tablename t1
join (select ref,max(date) date
      from tablename
      group by ref) t2
  on t1.ref = t2.ref