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

如何对两个SQL子查询的不同列求差值并解决Msg 116报错

错误原因

  • 你的两个子查询都返回了NextDate、统计值、状态共3个字段,当子查询作为外层SELECT的运算项时,只能返回单个值,多字段就会触发116号报错。
  • 你误用了集合运算符MINUS:该运算符是用来取两个结果集的行差集,不是用来做数值算术减法的,SQL Server中对应的集合差运算符是EXCEPT,也不适用于你的需求场景。

修复方案

方案1:条件聚合(推荐,仅单次扫表性能更高)

如果需要同时返回统计日期和差值,用该写法:

SELECT
    NextDate,
    COUNT(CASE WHEN DisposalState = 'Pending' THEN CaseNo END) 
    - COUNT(CASE WHEN DisposalState = 'Disposed-off' THEN CaseNo END) AS TotalPend
FROM dbo.Main_Cause_List
WHERE NextDate = '2021-06-05'
  AND DisposalState IN ('Pending', 'Disposed-off')
GROUP BY NextDate;

方案2:子查询返回单个值运算

如果仅需要返回差值,可修改你原有的子查询写法:

SELECT
    (SELECT COUNT(CaseNo)
     FROM dbo.Main_Cause_List
     WHERE NextDate = '2021-06-05' AND DisposalState = 'Pending')
    -
    (SELECT COUNT(CaseNo)
     FROM dbo.Main_Cause_List
     WHERE NextDate = '2021-06-05' AND DisposalState = 'Disposed-off') AS TotalPend;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:36:03