You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何将单列数据按值拆分填充到对应新列行中

PostgreSQL按条件拆分字段值到新增列的实现方案

直接使用CASE条件表达式逐行判断取值即可实现需求,无需复杂关联或特殊函数。

实现代码

假设源表名为your_source_table,直接查询得到目标格式结果的SQL如下:

SELECT
  id,
  Column1,
  -- 值为A1时填充到Column1.1,否则留空
  CASE WHEN Column1 = 'A1' THEN Column1 END AS "Column1.1",
  -- 值为A2时填充到Column1.2,否则留空
  CASE WHEN Column1 = 'A2' THEN Column1 END AS "Column1.2"
FROM your_source_table
ORDER BY id;

如果需要将结果直接落地为物理存储的目标表,使用CREATE TABLE AS语法即可:

CREATE TABLE target_table AS
SELECT
  id,
  Column1,
  CASE WHEN Column1 = 'A1' THEN Column1 END AS "Column1.1",
  CASE WHEN Column1 = 'A2' THEN Column1 END AS "Column1.2"
FROM your_source_table
ORDER BY id;

注意事项

  • PostgreSQL中CASE语句如果不写ELSE子句,不满足条件时默认返回NULL,和需求里的「留空」效果一致;如果需要显式返回空字符串,可以补充ELSE ''。
  • 新增列名Column1.1、Column1.2包含英文点号,必须用双引号包裹标识符,否则数据库会将其识别为「表名.字段名」的引用格式抛出语法错误。
  • 执行代码后返回的结果和给出的目标表效果完全匹配:A1值仅出现在Column1.1列,A2值仅出现在Column1.2列,不匹配的对应列为空。

内容的提问来源于stack exchange,提问作者sahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:36:20