根据其他列获取值
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。
我在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。