首页 > 解决方案 > SQL根据ID展开列值

问题描述

我有一个 SQL 表:

GroupID | Name
 1      | "a"
 2      | 
 2      | "b"
 1      | 
 1      | 

我想将所有 Name 值扩展到具有相同 GroupID 的每一行:

GroupID | Name
 1      | "a"
 2      | "b"
 2      | "b"
 1      | "a"
 1      | "a"

有没有办法轻松做到这一点?

标签: sqlsqlite

解决方案


如果您只想以这种方式查看MAX数据,请用作分析函数:

SELECT GroupID, MAX(Name) OVER (PARTITION BY GroupID) AS Name
FROM yourTable;

相反,如果您确实想更新表,请使用:

UPDATE yourTable
SET Name = (SELECT MAX(Name) FROM yourTable t WHERE t.GroupID = yourTable.GroupID)
WHERE Name IS NULL;

推荐阅读