作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表,其中包含两列 id 和 data。表中值如下:
id|data|
1 |A,B |
2 |B,C |
3 |C,D |
4 |D,A |
5 |E,C |
我需要表中存在的 A、B、C、D、E 的数量,如下所示。请注意:列是动态的,这意味着它们取决于表中数据列中的值:
A|B|C|D|E|
2|2|3|2|1|
我写了以下查询:
SELECT id,s.data
FROM my_table t,
unnest(string_to_array(t.data, ',')) s(data);
输出如下:
id|data|
1 | A |
1 | A |
1 | A |
1 | A |
1 | A |
1 | A |
1 | A |
1 | A |
最佳答案
请找到提供您想要的准确输出的查询。
select * from crosstab ('SELECT ''Total'':: text, s.data, count(*)::int
FROM my_table t, unnest(string_to_array(t.data, '','')) s(data)
group by s.data') as ct(Total text, A int, B int, C int, D int, E int)
请创建扩展 tablefunc(如果未创建)。
关于sql - 在 postgres 中拆分列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41216732/
我是一名优秀的程序员,十分优秀!