【发布时间】:2021-07-11 18:50:53
【问题描述】:
我正在处理这样一张桌子:
| id | type |
|---|---|
| 1 | A |
| 2 | A |
| 3 | B |
| 4 | C |
| 5 | C |
我想统计每种类型的id个数,得到一个这样的表。
| type_a | type_b | type_c |
|---|---|---|
| 2 | 1 | 2 |
我做的是
SELECT
SUM(CASE WHEN type = 'A' THEN 1 ELSE 0 END) AS type_a,
SUM(CASE WHEN type = 'B' THEN 1 ELSE 0 END) AS type_b,
SUM(CASE WHEN type = 'C' THEN 1 ELSE 0 END) AS type_c
FROM myTable
我的问题是,如果我不知道有多少种类型,又不能具体列出所有的情况,我该如何实现呢?
【问题讨论】:
-
将结果作为两列返回会容易得多:类型、计数。
-
那你需要使用动态sql
-
这能回答你的问题吗? Dynamic pivot query using PostgreSQL 9.3
标签: sql postgresql pivot dynamic-sql crosstab