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

SQL Server中带条件使用CONCAT_WS创建视图的语法错误解决

修正SQL Server视图创建语句中的语法错误

错误原因分析

原代码的核心问题在于CASE表达式的THEN分支直接返回了两个列名(Director,ACCMGR),SQL Server不允许CASE表达式返回多个值,必须返回单个标量值。需要将这两个列先通过CONCAT_WS拼接成一个字符串,再作为CASE的返回结果。

修正后的代码

CREATE VIEW WorkflowRequestViews AS
SELECT ApplicationNo, DescriptionNo, BelongSite as Site, 
        cast(FaxCode as nvarchar(50)) as FaxCode, 
        cast(MainApproval as nvarchar(100)) as MainApproval, 
        TotalStep, Process, UrgencyLevel, Complete, 
        CAST(CONCAT_WS(',', SectionMGR, DepartmentMGR, FactoryManager,
        CASE 
            WHEN BelongSite = 'FVB' THEN CONCAT_WS(',', Director, ACCMGR)
            ELSE ACCPIC2
        END) as nvarchar(255)) as TotalApproval
FROM BusinessTrips

说明

  • 当BelongSite等于'FVB'时,先将Director和ACCMGR用逗号拼接成一个字符串,再加入到整体的CONCAT_WS拼接序列中;
  • CONCAT_WS函数会自动忽略NULL值,避免出现多余的逗号;
  • 最终将拼接结果转为nvarchar(255)类型,保证数据类型一致性。

内容的提问来源于stack exchange,提问作者Phan Hien Vo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:20:56