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

如何在PostgreSQL中创建数据透视表(禁用tablefunc/crosstab)

PostgreSQL 实现无扩展的数据透视视图

要实现你需要的垂直排列统计结果,无需依赖tablefunc等扩展,用基础SQL语法就能完成,具体方案如下:

最终实现代码

WITH value_list AS (
    -- 定义需要统计的所有目标取值
    SELECT 'Happy' AS count_val
    UNION ALL
    SELECT 'Sad' AS count_val
)
SELECT
    vl.count_val AS "Count",
    -- 统计Column A中匹配当前取值的行数
    COUNT(CASE WHEN t."Column A" = vl.count_val THEN 1 END) AS "Column A",
    -- 统计Column B中匹配当前取值的行数
    COUNT(CASE WHEN t."Column B" = vl.count_val THEN 1 END) AS "Column B",
    -- 若存在Column C,按相同逻辑添加统计项
    COUNT(CASE WHEN t."Column C" = vl.count_val THEN 1 END) AS "Column C"
FROM value_list vl
CROSS JOIN your_table t
GROUP BY vl.count_val
ORDER BY vl.count_val;

逻辑说明

  1. value_list临时数据集:先把要统计的取值(Happy、Sad)整理成独立的行数据集,作为透视表的行标题来源。
  2. 笛卡尔积关联:通过CROSS JOIN让每个取值与原表所有行关联,确保每个取值都能遍历到原表的全部记录。
  3. 分组聚合统计:针对每个取值,用CASE WHEN筛选匹配的列记录,再通过COUNT统计数量,最后按取值分组得到目标结构。

示例输出

针对你提供的测试数据,执行后会得到:

CountColumn AColumn B
Happy21
Sad12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:10:36