oracle—SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起
2023-06-13 09:14:44 时间
需求:
目前接触BI系统,由于业务系统的交易记录有很多,常常有些主管需要看到所有的记录情况,但是又不想滚动,想一眼就可以看到所有的,于是就想到了字符串拼接的形式。
解决方案:使用Oracle自带的函数WMSYS.WM_CONCAT,进行拼接。
函数限制:它的输出不能超过4000个字节。
为了不让SQL出错,又可以满足业务的需求,超过4000个字节的部分,使用“。。。”
实现SQL如下:
复制代码代码如下:
目前接触BI系统,由于业务系统的交易记录有很多,常常有些主管需要看到所有的记录情况,但是又不想滚动,想一眼就可以看到所有的,于是就想到了字符串拼接的形式。
解决方案:使用Oracle自带的函数WMSYS.WM_CONCAT,进行拼接。
函数限制:它的输出不能超过4000个字节。
为了不让SQL出错,又可以满足业务的需求,超过4000个字节的部分,使用“。。。”
实现SQL如下:
CREATETABLETMP_PRODUCT
(PRODUCT_TYPEVARCHAR2(255),
PRODUCT_NAMEVARCHAR2(255));
insertintotmp_product
select"A","ProductA"||rownumfromdual
connectbylevel<100
unionall
select"B","ProductB"||rownumfromdual
connectbylevel<300
unionall
select"C","ProductC"||rownumfromdual
connectbylevel<400
unionall
select"D","ProductD"||rownumfromdual
connectbylevel<500
unionall
select"E","ProductE"||rownumfromdual
connectbylevel<600;
SELECTPRODUCT_TYPE,
WM_CONCAT(PRODUCT_NAME)||MAX(STR)ASPRODUCT_MULTI_NAME
FROM(SELECTPRODUCT_TYPE,
PRODUCT_NAME,
CASE
WHENALL_SUM>4000THEN
"..."
ELSE
NULL
ENDASSTR
FROM(SELECTPRODUCT_TYPE,
PRODUCT_NAME,
SUM(VSIZE(PRODUCT_NAME||","))OVER(PARTITIONBYPRODUCT_TYPE)ASALL_SUM,
SUM(VSIZE(PRODUCT_NAME||","))OVER(PARTITIONBYPRODUCT_TYPEORDERBYPRODUCT_NAME)ASUP_SUM
FROMTMP_PRODUCT)
WHERE(UP_SUM<=3998ANDALL_SUM>4000)
ORALL_SUM<=4001)
GROUPBYPRODUCT_TYPE
相关文章
- oracle可以更改表名,sql – 更改Oracle表名
- Oracle:百度百科的金字塔之顶(oracle百度百科)
- Oracle导入失败: 尽在望眼欲穿中(oracle导入终止)
- 将Oracle转换为16进制(oracle转16进制)
- Oracle中的SQL语句学习指南(oracle的sql语句)
- 实现Oracle数据库自增的方法(oracle如何实现自增)
- 激活Oracle数据源的激活:实现更高效率(oracle的数据源)
- Oracle数据库的有效使用方法:必要的学习与实践(oracle的使用方法)
- 精通 Oracle 触发器类型:走向数据库高手之路(oracle触发器类型)
- 解决Oracle密码修改问题:ALTER USER命令(oracle修改密码命令)
- Oracle排名函数全面解析:实现高效数据排名与统计分析(oracle排名函数)
- 一步操作,Oracle中插入一条数据(oracle插入一条数据)
- Mastering Oracle Log Analysis: Insights to Optimize Your Database Performance and Security(oracle日志分析)
- 解决Oracle归档日志满的问题:快速清理和管理技巧(oracle归档日志满)
- 实现Oracle数据库下NC账套的迁移(nc账套迁移oracle)
- 桌面Oracle系统64位卸载大挑战(64为oracle卸载)
- Oracle云基础设施实现新型数据库运维(oracle云基础设施)
- Oracle中LOB字段的利弊分析(oracle中lob字段)
- Oracle DCD实现安全设置(oracle dcd设置)