sql - 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"
有没有办法轻松做到这一点?
解决方案
如果您只想以这种方式查看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;
推荐阅读
- python - 在 python 中使用 barplot 时如何修复 AttributeError?
- c# - 向 ASP.NET Core JWT Bearer 令牌验证添加额外的身份验证检查
- gwt - 谷歌网络工具包无法构建项目
- android - 在 xamarin android 中使用 dapper 后的 SNIX_CONNECT SNI_ERROR_35
- linux - 从一个文件中提取与另一个文件中的行相对应的数据
- java - 从 wsdl 为每个操作生成 in 和 out xsd(schema)
- python - 如何在 pandas 的列中添加字符“-> df.update 和其他方法似乎无法正常工作
- angular - Datatable.net 分页未显示在 Angular 7 项目中
- reactjs - React-Table:在组件 ref 上调用“getResolvedState()”引发异常
- docker - 如何以分离模式将 Bitbucket 服务器作为容器启动?