You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建视图时如何将关联表的多行数据合并到同一列?

解决关联表聚合拼接为单行的问题

你的问题核心是未对关联后的结果按MyTable1.ID分组,直接使用LISTAGG无法自动合并行,导致仍返回多行。以下是正确的实现方案:

正确SQL代码

SELECT
    MyTable1.ID,
    LISTAGG(MyTable2.ID, ';') WITHIN GROUP (ORDER BY MyTable2.ID) AS MyTable2_IDs,
    LISTAGG(MyTable2.object_ID, ';') WITHIN GROUP (ORDER BY MyTable2.ID) AS MyTable2_ObjectIDs
FROM
    MyTable1
LEFT JOIN MyTable2 ON MyTable2.MyTable1_ID = MyTable1.ID
GROUP BY MyTable1.ID;

代码说明

  1. GROUP BY MyTable1.ID:这是核心操作,将所有关联到同一个MyTable1.ID的MyTable2记录归为一组,确保最终每个MyTable1.ID仅返回一行结果。
  2. LISTAGG函数:对每个分组内的MyTable2.ID和MyTable2.object_ID分别执行拼接操作,用分号;分隔字段值,通过ORDER BY保证拼接顺序与原数据一致。
  3. 别名设置:为拼接后的字段定义清晰别名,便于后续视图调用或数据处理。

原有代码无效原因

你之前的代码未添加GROUP BY分组逻辑,且LISTAGG被嵌套在CASE语句中但未触发聚合行为,数据库仍按单行逐条处理,因此返回3行结果。只有配合分组操作,聚合函数才能实现多行合并为单行的效果。

内容的提问来源于stack exchange,提问作者BiSaM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:42:42