Sql 要使用其他行中的已知值除去空值吗

Sql 要使用其他行中的已知值除去空值吗,sql,select,null,case,Sql,Select,Null,Case,我在数据库中有一个日志列表。每个日志都与一个人关联。每个人都与一个组相关联。但是,某些组字段出于任何原因都为空 我想为这些人使用其他行中的已知组值,并在Select语句中使用大小写替换空值(对其他想法开放,只是不更新或创建表;) 即 我想要的是 ID NAME GROUP ==================== 1 Alex Austin 2 Amanda San Antonio 3 Alex Austin 4 J

我在数据库中有一个日志列表。每个日志都与一个人关联。每个人都与一个组相关联。但是,某些组字段出于任何原因都为空

我想为这些人使用其他行中的已知组值,并在Select语句中使用大小写替换空值(对其他想法开放,只是不更新或创建表;)

我想要的是

ID    NAME    GROUP  
====================  
1     Alex     Austin
2     Amanda   San Antonio    
3     Alex     Austin
4     John     Toronto

以下是执行此操作的ANSI语法:

update t
    set "group" = (select max("group") from t t2 where t2.name = t.name)
    where "group" is null;

像这样的怎么样

UPDATE Table1
SET [Group] = g.[Group]
FROM Table1 t INNER JOIN (
SELECT [Name], [Group]
FROM Table1
WHERE [Group] IS NOT NULL
  ) g ON t.Name = g.Name
WHERE t.[Group] IS NULL
看看这个演示

在此假设中,只有一个非空组和名称的组合。另一方面,它会导致1-many连接。这可以根据您的选择标准进行更正

UPDATE Table1
SET [Group] = g.[Group]
FROM Table1 t INNER JOIN (
SELECT [Name], [Group]
FROM Table1
WHERE [Group] IS NOT NULL
  ) g ON t.Name = g.Name
WHERE t.[Group] IS NULL
Update NLGS
Set NLGS.Group =LGS.Group 
FROM 
Logs NLGS
INNER JOIn 
(select Name,Group from logs
 WHER GROUp is not null) LGS
ON NLGS.Name=LGS.NAME
WHERE NLGS.GROUP IS NULL