SQL: group by 要聚合的 是非数值字段?
来源:互联网 发布:mac怎么使用投影仪 编辑:程序博客网 时间:2024/05/21 14:14
今天在技术群里面见别人问了一个问题:
我采用java的jdbc从表table1读出内容,然后对于id相同的用户,需要将prot合并插入到table2表中
table1:
id name age prot
7410 张三 20 23
7410 张三 20 88
7425 李四 23 22
table2:
id name age port
7410 张三 20 23/88
7425 李四 23 22因为我采用的是批量更新的,所以不知道怎样合并port插入table2。
经过一番研究,给出SQL级别的 Oracle的解决方案(当然用程序处理是没问题的) 。会用到一些Oracle的函数
1 准备测试环境CREATE TABLE PERSON
( id NUMBER(*,0) NOT NULL ENABLE,
num NUMBER(*,0),
name VARCHAR2(30),
age NUMBER(*,0),
port VARCHAR2(50),
PRIMARY KEY (id
);
-- ----------------------------
-- Records of PERSON
-- ----------------------------
INSERT INTO PERSON VALUES ('1', '1001', 'abc', '22', '20');
INSERT INTO PERSON VALUES ('2', '1002', 'abc', '22', '20');
INSERT INTO PERSON VALUES ('3', '1001', 'abc', '22', '23');
INSERT INTO PERSON VALUES ('4', '1001', 'abc', '22', '15');
INSERT INTO PERSON VALUES ('5', '1002', 'abc', '22', '21');
2 写SQLmerge数据
查了一下Oracle的版本
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Nov 9 17:31:20 2012。
11.2.x 版本的Oracle可以如下写法:
select num,name, age listagg(port,'/') within group(order by port)
from person
group by num,name, age
具体参看官网文档:
http://www.oracle-developer.net/display.php?id=515
11.1.x及之前的版本可以如下写法(这种没有order by ):
select p.num, p.name, p.age, replace(WMSYS.WM_CONCAT(p.port),',','/')
from person p
group by p.num, p.name, p.age
当然也可以事先稍微处理一下:
select p.num, p.name, p.age, replace(WMSYS.WM_CONCAT(p.port),',','/')
from ( select * from person order by port) p
group by p.num, p.name, p.age
3 Insert into (这个就不赘述了)
这里只是就这个问题,给出了一个事先办法,当然条条大罗通罗马。 总之,需求千变万化,本质的东西永远就那些,多思考,多探究,多实践。
- SQL: group by 要聚合的 是非数值字段?
- sql group by 的用法 和常见的聚合函数
- SQL的聚合函数与Group By和Having子句
- sql group by 字段合并
- mysql中group by的时候字段不加聚合函数和distinct的情况
- sql的group by
- SQL的 Group By
- SQL的GROUP by
- group by ,having, 聚合函数的使用
- SQL-----group by 查询多个字段
- 聚合函数,group by
- 聚合函数,group by
- 自己对sql中group后,前面字段必须用聚合函数的理解
- group by 与聚合函数(T-sql)
- elasticsearch 多列 聚合 归类(类似 sql group by)
- elasticsearch 多列 聚合(sql group by)
- sql 聚合函数和group by 联合使用
- Sql group by 的使用方法
- Oracle Workflow Tables
- android 如何隐藏4.0以上系统下面的3按个虚拟按键?
- centOS修改机器名 hosts
- 移动开发网
- Configuring SIP Call-Transfer Features
- SQL: group by 要聚合的 是非数值字段?
- Python中的数组
- 宣布: Windows Azure SQL 数据库的的新系统视图
- android网络类型 wap代理设置
- linux一句话精彩回答
- Oracle Workflow Queries
- PHP常用的文件操作函数集锦
- Unity3D(1)——发布设置
- 朝花夕拾-3-TLB & cache