报表常用功能-多行字段组合为一行原创
金蝶云社区-拿了你的糖身份
拿了你的糖
7人赞赏了该文章 1,446次浏览 未经作者许可,禁止转载编辑于2021年10月29日 14:04:45

刚才有人问到了能不能把前5列相同的合并到一行

image.png

我想到了oracle的函数:wm_concat

开搞开搞,说一下该函数的用法。


首先准备一下测试数据:

1.创建员工表


CREATE TABLE worker

(

    fdepid    INT,

    fname     VARCHAR (20),

    Fcity     VARCHAR (255)

);

---------------------------------

2.插入测试数据:


INSERT INTO worker     VALUES (1, '张三', 'China');


INSERT INTO worker     VALUES (2, '李四', 'China');


INSERT INTO worker     VALUES (2, '赵四', 'China');


INSERT INTO worker     VALUES (1, '王五', 'China');


INSERT INTO worker     VALUES (1, '赵六', 'China');

----------------------------------

3.建表后,表中结果如下:

image.png

============================================

按部门统计,每个部门下的人(中间用‘,’隔开),每个部门显示一行。

查询后效果如下:

image.png

============================================

使用函数wm_concat写法:


  SELECT fdepid, wm_concat (fname) people

    FROM worker

GROUP BY fdepid;

结果如下:

image.png


等等搞错了,


由于wm_concat 函数组合字段后是(HUGECLOB)类型,所以需要再用TO_CHAR函数转换一下。

  SELECT fdepid, TO_CHAR (wm_concat (fname)) people

    FROM worker

GROUP BY fdepid;

这下对了

image.png

-----------------------------------------------------------------------

怎么样是不是搜易贼?例子仅做简单展示功能,复杂逻辑大家再尽情发挥。



赞 7