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

如何统计无关联工单行项目的未开票工单数量?

统计无关联行项目的工单数量的正确SQL方法

你的原SQL语句存在两个关键问题:

  1. WHERE子句不能直接使用聚合函数:COUNT()属于聚合函数,需要配合GROUP BY使用,过滤聚合结果要用HAVING而非WHERE。
  2. 聚合字段选择不准确:count(workorder_line_items)的写法逻辑模糊,应该针对关联的行项目字段判断是否存在匹配记录。

以下是三种可行的正确统计方法:

方法一:LEFT JOIN + IS NULL(最直观)

通过左连接保留所有工单,筛选出没有对应行项目的记录(行项目字段为NULL):

SELECT COUNT(*) 
FROM workorders
LEFT JOIN workorder_line_items ON workorder_line_items.workorder_id = workorders.id
WHERE workorder_line_items.id IS NULL;

方法二:NOT EXISTS子查询(性能更优)

直接检查每个工单是否不存在对应的行项目,适合workorder_id有索引的场景:

SELECT COUNT(*)
FROM workorders w
WHERE NOT EXISTS (
    SELECT 1 
    FROM workorder_line_items wli 
    WHERE wli.workorder_id = w.id
);

方法三:GROUP BY + HAVING(适合需查看单个工单的场景)

先按工单分组,筛选出行项目数量为0的分组后再统计总数:

SELECT COUNT(*)
FROM (
    SELECT w.id
    FROM workorders w
    LEFT JOIN workorder_line_items wli ON wli.workorder_id = w.id
    GROUP BY w.id
    HAVING COUNT(wli.id) = 0
) AS subquery;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:17:15