目录
Oracle数据库的LISTAGG函数用于将多行数据合并为单个字符串,常见于分组操作,实现数据的垂直到水平的转换。
解决问题如:一个人有多个手机号,如何结构清晰的展示
一个人有多个手机号,如何结构清晰的展示
1、查询数据库数据存储方式
2、查询张三名下手机号
3、 查询李四名下手机号
- CREATE TABLE TEST_TEMP (
- "NAME" VARCHAR2(50),
- "PHONE" VARCHAR2(20)
- )
-
- INSERT INTO TEST_TEMP (NAME,PHONE) VALUES
- ('张三','13888888881'),
- ('张三','13888888882'),
- ('张三','13888888883'),
- ('李四','13888888884'),
- ('李四','13888888885');
- -- 查询所有数据
- select * from TEST_TEMP ;
-
- -- 查询张三名下手机号
- select t.NAME ,LISTAGG(t.PHONE ,',') WITHIN GROUP (ORDER BY t.NAME)
- from TEST_TEMP t WHERE t.NAME ='张三' GROUP BY t.NAME ;
-
- -- 查询李四名下手机号
- select t.NAME ,LISTAGG(t.PHONE ,',') WITHIN GROUP (ORDER BY t.NAME)
- from TEST_TEMP t WHERE t.NAME ='李四' GROUP BY t.NAME ;