为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:
【CPU】:
【问题描述】*:
需要兼容语句
-- 将多个字段分组合并,并指定分隔符
SELECT stuName, GROUP_CONCAT(DISTINCT course, ',', score SEPARATOR ';') AS mark
FROM score
GROUP BY stuName
ORDER BY stuName
# 查询结果
+---------+---------------------+
|stuName |mark |
+---------+---------------------+
|张三 |语文,53;数学,63;英语,73|
|李六 |null |
|李四 |语文,54;数学,64;英语,74|
|王五 |语文,55;数学,65;英语,75|
|赵七 |null |
+---------+---------------------+
这样的语句如何在达梦中实现呢
目前本人的尝试是这样子的,但是会导致有标点符号重复
SELECT stuName, WM_CONCAT(DISTINCT course || ',' || score || ';') AS mark
FROM score
GROUP BY stuName
ORDER BY stuName
# 查询结果
+---------+------------------------+
|stuName |mark |
+---------+------------------------+
|张三 |数学,63;,语文,53;,英语,73;|
|李六 |,; |
|李四 |英语,74;,数学,64;,语文,54;|
|王五 |语文,55;,英语,75;,数学,65;|
|赵七 |,; |
+---------+-------------------------+
WM_CONCAT好像没法指定拼接符,默认用’,'拼接,可以先用其他特殊符号拼接字段,再进行替换。
create table t2(c1 varchar(10),c2 varchar(10),c3 int);
insert into t2 values (‘张三’,‘语文’,90);
insert into t2 values (‘张三’,‘数学’,70);
insert into t2 values (‘张三’,‘英语’,80);
SELECT c1, regexp_replace(regexp_replace(WM_CONCAT(c2 || ‘-’ || c3),‘,’,‘;’),‘-’,‘,’)||‘;’ AS mark
FROM t2
GROUP BY c1
ORDER BY c1;