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

如何使用Union将PostgreSQL宽表转换为长表?

PostgreSQL宽表转长表完整实现方案

你需要在每个UNION ALL分支里补充目标表要求的category、Date、Type字段,同时关联原表的visit_date和对应检查项的状态值。以下是完整的SQL示例,你可以根据实际业务含义调整category和Type的固定值:

SELECT
    '排放口' AS category,
    "visit_date" AS Date,
    '常规检查' AS Type,
    "outfalls_free" AS Status
FROM public."Weekly Inspections"
UNION ALL
SELECT
    'Lagoon衬层' AS category,
    "visit_date" AS Date,
    '常规检查' AS Type,
    "lagoon_liner" AS Status
FROM public."Weekly Inspections";

关键说明:

  • UNION ALL vs UNION:用UNION ALL是因为它会保留所有原始记录(包括重复项),比UNION(自动去重)更高效,完全适配宽表转长表的场景。
  • 固定字段赋值:category和Type是根据每个检查项的业务意义手动设置的,比如outfalls_free对应"排放口"分类,你需要根据实际业务调整这些字符串内容。
  • 字段对齐要求:每个SELECT分支的字段数量、顺序、数据类型必须完全一致,否则UNION ALL会直接报错。
  • 扩展更多检查项:如果原表还有其他类似outfalls_free的检查字段(比如pump_status),只需新增一个UNION ALL分支,重复上述结构即可。

如果需要将结果直接保存为新表,可以在SQL开头加上CREATE TABLE 目标表名 AS,示例如下:

CREATE TABLE public."Inspection_Long_Form" AS
SELECT
    '排放口' AS category,
    "visit_date" AS Date,
    '常规检查' AS Type,
    "outfalls_free" AS Status
FROM public."Weekly Inspections"
UNION ALL
SELECT
    'Lagoon衬层' AS category,
    "visit_date" AS Date,
    '常规检查' AS Type,
    "lagoon_liner" AS Status
FROM public."Weekly Inspections";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:25:27