我有一个问题,我无法理解。这是表格:
表格1
c1 c2 c3
1 A
2 A DD
3 A DD
4 B HH
5 B
6 B
这是期望的结果:
c1 c2 c3
1 A DD
2 A DD
3 A DD
4 B HH
5 B HH
6 B HH
我正在运行 PostgreSQL 9.4。基本上我想使用 c3 中的非空值根据行在 c2 中具有的公共数据来填充 c3。
谢谢您的帮助!
据我所知,您想要通过 c2 列定义的“组”的 c3 列的“第一个”非空值。
这可以通过窗口函数来完成:
这确实会返回您向我们展示的结果。
编辑(问题更改后)
要更新现有值,您可以使用:
为了获得所需的结果,您需要将表连接到自身,然后忽略 c3 为空的那些行。下面的 SQL 生成所需的结果。我不是 PostgreSQL 的人,所以可能有更好的方法来做到这一点。