数据库|mysql教程
字符串,拼接函数,拼接
数据库-mysql教程
游戏广告发布网源码,去哪里下载vscode,remix刷ubuntu,重启Tomcat的影响,图解爬虫,php excel函数,seo优化助力线上推广,易语言网站post有证书,html静态个人网站模板lzw
由于业务系统的交易记录有很多,常常有些主管需要看到所有的记录情况;又不想滚动;接下来介绍使用Oracle自带的函数 WMSYS.WM_CONCAT,进行拼接,感兴趣的朋友可以了解下
建筑工程招标网站源码,vscode终端字太小,ubuntu启动变慢,Tomcat本地调用,sqlite中两表联合查询,青团社里的爬虫教学可靠吗,php输出二进制,如何快速入门seo 收录,仿网站制作教学视频教程,模板消息群发 微赞lzw
摄影博客源码,vscode 变量颜色,ubuntu可以不联网安装吗,招聘 熟悉tomcat,sqlite.dll c,emlog邮件发送插件,web前端框架vue比较,写爬虫代码教程,随机字符串php,seo标题优化技巧seo博客,网站制作站点下载,超酷网页播放器苹果版,html婚纱网页模板,学生宿舍管理系统发展前景,微擎公众号应用打包生成小程序lzw
需求:
目前接触BI系统,由于业务系统的交易记录有很多,常常有些主管需要看到所有的记录情况,但是又不想滚动,想一眼就可以看到所有的,于是就想到了字符串拼接的形式。
解决方案:使用Oracle自带的函数 WMSYS.WM_CONCAT,进行拼接。
函数限制:它的输出不能超过4000个字节。
为了不让SQL出错,又可以满足业务的需求,超过4000个字节的部分,使用“。。。”
实现SQL如下:
代码如下:
CREATE TABLE TMP_PRODUCT
(PRODUCT_TYPE VARCHAR2(255),
PRODUCT_NAME VARCHAR2(255));
insert into tmp_product
select ‘A’,’ProductA’||rownum from dual
connect by level < 100
union all
select ‘B’,’ProductB’||rownum from dual
connect by level < 300
union all
select ‘C’,’ProductC’||rownum from dual
connect by level < 400
union all
select ‘D’,’ProductD’||rownum from dual
connect by level < 500
union all
select ‘E’,’ProductE’||rownum from dual
connect by level < 600;
代码如下:
SELECT PRODUCT_TYPE,
WM_CONCAT(PRODUCT_NAME) || MAX(STR) AS PRODUCT_MULTI_NAME
FROM (SELECT PRODUCT_TYPE,
PRODUCT_NAME,
CASE
WHEN ALL_SUM > 4000 THEN
‘…’
ELSE
NULL
END AS STR
FROM (SELECT PRODUCT_TYPE,
PRODUCT_NAME,
SUM(VSIZE(PRODUCT_NAME || ‘,’)) OVER(PARTITION BY PRODUCT_TYPE) AS ALL_SUM,
SUM(VSIZE(PRODUCT_NAME || ‘,’)) OVER(PARTITION BY PRODUCT_TYPE ORDER BY PRODUCT_NAME) AS UP_SUM
FROM TMP_PRODUCT)
WHERE (UP_SUM 4000)
OR ALL_SUM <= 4001)
GROUP BY PRODUCT_TYPE