SQL 中的列转行
来源:互联网 发布:怎样练好英语听力 知乎 编辑:程序博客网 时间:2024/06/05 14:06
在工作中,经常遇到需要列转行的操作。比如:
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
我们需要达到以下的效果:
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
在MYSQL和oracle中,已经有实现好的函数。
MYSQL:select id,group_concat(name) from aa group by id;
Oracle:select id,wm_concat(name) from aa group by id;
在PostGreSQL中,没有现成的函数,需要我们自己手动书写:
首先 创建一个自建函数:
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);
PostgreSQL: select id,group_concat(name) from aa group by id;
上一条、SQL查询出来的是数组,需要将数组转变为String。使用下面的语句,即可
select id, array_to_string(group_concat(name), ',') from aa group by id;
即可实现。
- SQL 中的列转行
- sql列转行
- sql列转行
- 列转行SQL
- sql列转行
- sql列转行
- SQL 列转行
- SQL行转列 列转行
- sql 列转行
- SQL行转列,列转行
- sql 列转行
- sql 列转行
- SQL 列转行
- SQL列转行
- 列转行sql
- SQL 列转行
- SQL 列转行/行转列
- SQL 列转行
- Linux内核调试技术
- 构建和部署Raspberry Pi的内核
- 工作日志2014-07-21
- UNIX内核编译总结
- android实现应用程序只有在第一次启动时显示引导界面 ,以后就不在显示
- SQL 中的列转行
- POJ 1703:Find them, Catch them(带权的并查集)
- 浅谈git
- Jquery选择器练习(一)
- APUE:线程:线程池的实现
- 122 - Trees on the level[构建二叉树]
- 当前不会命中断点。无法进入断点解决方法!
- 工作日志2014-07-22
- HDU 1754 I Hate It(线段树)