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

如何在FetchXML中将PWD_Company关联的PWD_WARE值合并展示?

实现同一公司对应WARE值的逗号分隔合并

完全可以实现,不同SQL数据库有对应的字符串聚合函数,以下是主流数据库的具体实现示例:

MySQL/MariaDB

使用GROUP_CONCAT()函数配合分组即可:

SELECT 
    c.company_name, -- 假设PWD_Company表的公司名字段为company_name
    GROUP_CONCAT(w.ware_value SEPARATOR ',') AS ware_list
FROM 
    PWD_Company c
LEFT JOIN 
    PWD_WARE w ON c.company_id = w.company_id -- 假设两表关联字段为company_id
GROUP BY 
    c.company_name, c.company_id; -- 建议同时按主键分组,避免同名公司数据混淆

PostgreSQL

使用STRING_AGG()函数,还可按需排序合并后的WARE值:

SELECT 
    c.company_name,
    STRING_AGG(w.ware_value, ',' ORDER BY w.ware_value) AS ware_list
FROM 
    PWD_Company c
LEFT JOIN 
    PWD_WARE w ON c.company_id = w.company_id
GROUP BY 
    c.company_name, c.company_id;

SQL Server

2017及以上版本

直接使用STRING_AGG():

SELECT 
    c.company_name,
    STRING_AGG(w.ware_value, ',') WITHIN GROUP (ORDER BY w.ware_value) AS ware_list
FROM 
    PWD_Company c
LEFT JOIN 
    PWD_WARE w ON c.company_id = w.company_id
GROUP BY 
    c.company_name, c.company_id;

低版本兼容写法

用FOR XML PATH拼接字符串:

SELECT 
    c.company_name,
    STUFF((
        SELECT ',' + w.ware_value
        FROM PWD_WARE w
        WHERE w.company_id = c.company_id
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ware_list
FROM 
    PWD_Company c
GROUP BY 
    c.company_name, c.company_id;

Oracle

使用LISTAGG()函数:

SELECT 
    c.company_name,
    LISTAGG(w.ware_value, ',') WITHIN GROUP (ORDER BY w.ware_value) AS ware_list
FROM 
    PWD_Company c
LEFT JOIN 
    PWD_WARE w ON c.company_id = w.company_id
GROUP BY 
    c.company_name, c.company_id;

注意:如果WARE字段可能存在NULL值,可通过COALESCE()函数过滤,例如GROUP_CONCAT(COALESCE(w.ware_value, '') SEPARATOR ','),避免合并结果中出现空值占位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:04