Denodo中GROUP_CONCAT带DISTINCT与|分隔符失效问题排查及替代方案
问题分析与解决方法
第二个查询的问题
你写的第二个查询存在语法顺序错误:
DISTINCT是用来修饰要去重的目标字段的,必须紧跟在GROUP_CONCAT之后、字段名之前;- 自定义分隔符不能直接作为参数放在
DISTINCT前面,必须通过SEPARATOR关键字来指定。
你的写法打乱了GROUP_CONCAT()的参数规则,数据库无法识别这种语法逻辑,因此执行失败。
正确的实现方法
直接通过SEPARATOR关键字指定分隔符,同时保留DISTINCT去重,正确写法如下:
GROUP_CONCAT(DISTINCT ROS.route_of_manufacturing SEPARATOR '|') AS "RouteofSynthesis"
替代实现思路(可选)
如果遇到部分数据库对GROUP_CONCAT的支持有限,也可以先通过子查询完成去重,再做字符串拼接:
SELECT GROUP_CONCAT(route SEPARATOR '|') AS "RouteofSynthesis" FROM ( SELECT DISTINCT ROS.route_of_manufacturing AS route FROM your_table ROS -- 此处添加原查询的WHERE、GROUP BY等逻辑 ) AS sub_query;
内容的提问来源于stack exchange,提问作者Rahul Hendawe
相关产品推荐
相关产品推荐

