在实际的业务开发过程当中,会碰到oracle表数据默写列数据转换成一行如用逗号分隔,常常会碰到。
有张表
cardInof
type tel
--------- ----------
11 aa
11 bb
11 cc
22 ee
22 sd
用一条sql语句转换成如下格式
type tel
-------- ----------------------
11 aa,bb,cc
22 ee,sd
这里是数据
create table CARDINFO
(
type VARCHAR2(5),
TEL VARCHAR2(5)
)
;
执行数据的插入
insert into CARDINFO (type, TEL)
values ('11', 'aa');
insert into CARDINFO (type, TEL)
values ('11', 'bb');
insert into CARDINFO (type, TEL)
values ('11', 'cc');
insert into CARDINFO (type, TEL)
values ('22', 'dd');
insert into CARDINFO (type, TEL)
values ('22', 'sd');
commit;
SQL>
SQL> SELECT type, MAX(Substr(Sys_Connect_By_Path(TEL, ','), 2)) ret
2 FROM (SELECT type, TEL, row_number() over(PARTITION BY type ORDER BY TEL) rn FROM CARDINFO)
3 START WITH rn = 1
4 CONNECT BY PRIOR rn = rn - 1
5 AND PRIOR type= type
6 GROUP BY type
7 ORDER BY type
8 /
type SCBP
----- --------------------------------------------------------------------------------
11 aa,bb,cc
22 dd,sd
还可以使用oracle那边的函数实现如上的功能
利用函数包来完成wmsys.wm_concat
select type,wmsys.wm_concat(tel) from t group by type;
分享到:
相关推荐
SQL 行转列+动态获取列名 通用的动态获取列名
sql行转列_列转行问题.
SQL行转列学习谢谢!
SQL行转列参考代码(sqlserver)
sql 行转列 与列转行,oracle ,msssql等,详细数据库操作方法,各种例子,欢迎大家学习。、~
行转列sql实例行转列sql实例行转列sql实例行转列sql实例行转列sql实例
sql行转列动态与静态三种方法
SQL行转列问题,有实例,根据具体实例讲解,清晰易懂。 希望对你有帮助!
sql行转列解决方案.
有case when方式和2005之后的内置pivot和unpivot方法来实现,行列互转,可以分为静态互转,动态互转。
SQL行转列列转行.txt
利用SQL语句将表行转列显示,应用的是PIVOT ,很方便
sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
详细解释 行转列sql语句,作为范例查看sql
Sql语句实现表的行列转换,行转列,列转行
很好的行转列SQL写法,对SQL的拼装和拆分有很好的描述,可以帮助解析SQL的重组。
讲述,sql中如何实现行转列的实例,包含知道固定行数的静态转换,与未知行数的动态转换。
Sql Server里面的行转列,列转行
sql列转行以及行转列的通用存储过程!mssqlserver版本!