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

SQL Server使用FOR XML PATH拼接多列新增LoanProduct_Mix字段方法

解决方案

你只需要新增一个针对贷款类字段的CROSS APPLY构造对应的XML结构,再新增对应字段的拼接逻辑即可,另外注意原代码中的@tbl是笔误,需替换为实际的表名Products,同时原XQuery的非空判断要调整为非0判断,才符合你给出的预期输出:

完整修改后的查询代码:

SELECT 
    Customerkey, 
    processdate,
    -- 原有逻辑:字段值逗号分隔
    REPLACE(x.query('data(/root/*)').value('text()[1]', 'VARCHAR(100)'), SPACE(1), ',') AS Product_Mix,
    -- 原有逻辑:非0字段名用+拼接,修正判断条件为值不等于0
    REPLACE(x.query('for $x in /root/*[./text()!="0"] return local-name($x)').value('text()[1]', 'VARCHAR(100)'), SPACE(1), '+') AS Product_Mix_Expanded,
    -- 新增贷款类字段拼接,逻辑和上面保持一致
    REPLACE(loan_x.query('for $x in /root/*[./text()!="0"] return local-name($x)').value('text()[1]', 'VARCHAR(100)'), SPACE(1), '+') AS LoanProduct_Mix
FROM 
    Products
-- 原有处理普通产品字段的CROSS APPLY
CROSS APPLY 
    (SELECT CCcount, CHKCount, SACount
     FOR XML PATH(''), TYPE, ROOT('root')) AS t(x)
-- 新增处理贷款类字段的CROSS APPLY
CROSS APPLY 
    (SELECT VEHCount, LoanCount, MortCount
     FOR XML PATH(''), TYPE, ROOT('root')) AS loan_t(loan_x);

输出结果和预期完全一致:

CustomerKeyprocessdateProduct_MixProduct_Mix_ExpandedLoanProduct_Mix
1012021-05-0112,3,5CCcount+CHKCount+SACountVEHCount+LoanCount+MortCount
1022021-02-031,3,1CCcount+CHKCount+SACount
1032019-04-124,0,2CCcount+SACountLoanCount+MortCount

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:24:00