报表常用功能-多行字段组合为一行

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

报表常用功能-多行字段组合为一行

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

image.webp

我想到了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.webp

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

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

查询后效果如下:

image.webp

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

使用函数wm_concat写法:


  SELECT fdepid, wm_concat (fname) people

    FROM worker

GROUP BY fdepid;

结果如下:

image.webp


等等搞错了,


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

  SELECT fdepid, TO_CHAR (wm_concat (fname)) people

    FROM worker

GROUP BY fdepid;

这下对了

image.webp

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

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




SQLServer 怎么弄呢,有相关的函数吗,除了使用Stuff函数之外还有没有更好的方法,Stuff这个函数比较耗性能。

报表常用功能-多行字段组合为一行

刚才有人问到了能不能把前5列相同的合并到一行我想到了oracle的函数:wm_concat开搞开搞,说一下该函数的用法。首先准备一下测试数据:1.创...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息