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

T-SQL查询报错子查询返回多值,寻求问题排查修复方案

报错根因

  • Msg 512错误:SELECT列表中用于计算ST01_Approved_Date的标量子查询返回了多行结果。标量子查询作为单列表达式使用时,只允许返回1行1列的结果,你的代码中该子查询用GROUP BY w.WorkflowID, w.CustomerID做聚合,当同一个CustomerID存在多条符合筛选条件的Workflow记录时,就会返回多行触发报错。
  • 空值消除警告:代码中使用的SUM、MAX等聚合函数会自动忽略NULL值,属于SQL默认行为,不会影响查询执行,只是提示有NULL值被聚合操作跳过。

修复方案

1. 解决Msg 512报错

修改ST01_Approved_Date的子查询逻辑,去掉不需要的GROUP BY w.WorkflowID,直接按CustomerID维度取最小日期即可,修改后的代码如下:

(SELECT MIN(wh.MGCReviewerModifiedDate) AS [ST01_Approved_Date]
    FROM ABC.dbo.tblWorkflow w 
    INNER JOIN ABC.dbo.tblWorkflowHistory wh 
    ON w.WorkflowID = wh.WorkflowID 
    WHERE wh.WorkflowQueueID = 4 AND wh.MGCReviewerModifiedDate IS NOT NULL
    AND wh.Deleted IS NULL AND w.WorkflowOutcomeID = 1 AND w.WorkflowQueueID = 4
    AND w.Deleted IS NULL AND w.CustomerID = c.CustomerID) AS ST01_Approved_Date,

如果业务要求需要保留按WorkflowID聚合的逻辑,也可以在外层再加一次MIN聚合,或者给子查询加TOP 1按日期排序取最早的一条。

2. 消除空值警告(可选)

如果不需要该警告提示,可以在查询最开头添加关闭ANSI警告的语句:

SET ANSI_WARNINGS OFF;

执行查询后如果需要恢复默认警告规则,可在查询末尾添加:

SET ANSI_WARNINGS ON;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:42:03