【问题标题】:combine multiple rows into one row based on column value根据列值将多行合并为一行 【发布时间】:2022-01-13 21:52:38 【问题描述】: SQL 中有没有一种方法可以为一个公共列创建多行,并显示在一个列中? 例如我想要这样的输出: 显示为: 【问题讨论】: 你使用什么数据库? 抱歉忘记提了。我使用甲骨文。 标签: sql oracle 【解决方案1】: 我相信本文包含您问题的解决方案 - SQL Query to concatenate column values from multiple rows in Oracle 【讨论】: 我尝试了 LISTAGG,但它显示在列表中每个字符之间的框。 使用 LISTAGG 您在第二个参数中指定分隔符 - 我相信在您的情况下它将是 LISTAGG(Size, ',') 我明白,但我在文本之间得到特殊字符: select caseid, listagg(sku, ',') within group (order by sku) from pickdetail group by caseid;我得到了带有特殊字符的sku。 您有需要的Oracle 版本吗?看起来 LISTAGG 需要 Oracle 11g 第 2 版。可能值得尝试其中的一些其他选项,例如 XMLAGG 和 COLLECT。我不在 Oracle 工作,所以对它的功能不太熟悉。 看起来不错 - 我想知道您是否可以使用 replace() 强制使用特殊字符?或者该版本可能有不同的文档?