根据其他列获取值

Getting values based on other column

我在SQL中有以下数据。

NAME,DATE,REF


Pat1,2021-07-15,5072

'',NULL,5072

'',NULL,5072

'',NULL,5072

'',NULL,5072

Pat2,2021-07-15,5073

有没有一种方法可以使用 SELECT QUERY 来根据 REF 值替换 DATE 列中的 NULL 值?

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

预期结果

NAME,DATE,REF




Pat1,2021-07-15,5072

'',2021-07-15,5072

'',2021-07-15,5072

'',2021-07-15,5072

'',2021-07-15,5072

Pat2,2021-07-15,5073

派生table(子查询)到return每个裁判的日期。 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

您可以使用 MAX() window 函数来完成:

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

参见demo