问题描述
我在 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