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

如何在多条件查询中按部门统计各指定物品的使用数量?

按部门统计指定物品单独使用数量的SQL实现方案

根据你的三张表结构,这里提供两种常用的实现方式,满足不同的展示需求:

方式一:行式统计(每个部门+物品组合一行)

这种方式会将每个部门的每个指定物品的使用数量单独成一行,适合需要详细查看每个物品数据的场景。

SELECT 
    cu.UNITDSC AS 部门名称,
    cr.ITEMCODE AS 物品编码,
    cr.ITEMDESC AS 物品名称,
    COUNT(cr.BILLNO) AS 使用数量
FROM 
    CAFTRXHD cr
JOIN 
    STAFF s ON cr.EMPID = s.EMPID
JOIN 
    CAFUNIT cu ON s.UNITCTR = cu.UNITCTR
WHERE 
    cr.ITEMCODE BETWEEN '397' AND '403' -- 若ITEMCODE为数字类型,移除单引号
GROUP BY 
    cu.UNITDSC, cr.ITEMCODE, cr.ITEMDESC
ORDER BY 
    cu.UNITDSC, cr.ITEMCODE;

说明

  • 通过关联三张表,将交易记录关联到所属部门;
  • 过滤出ITEMCODE在397-403范围内的记录;
  • 按部门名称、物品编码、物品名称分组,用COUNT统计每个分组的使用次数;
  • 如果CAFTRXHD表中有专门的物品数量字段(如ITEMQTY),将COUNT(cr.BILLNO)替换为SUM(cr.ITEMQTY)即可统计实际数量。

方式二:列式统计(每个部门一行,物品数量列展示)

这种方式会将每个部门的所有指定物品数量放在同一行的不同列中,适合报表类的紧凑展示需求。

SELECT 
    cu.UNITDSC AS 部门名称,
    SUM(CASE WHEN cr.ITEMCODE = '397' THEN 1 ELSE 0 END) AS 物品397使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '398' THEN 1 ELSE 0 END) AS 物品398使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '399' THEN 1 ELSE 0 END) AS 物品399使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '400' THEN 1 ELSE 0 END) AS 物品400使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '401' THEN 1 ELSE 0 END) AS 物品401使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '402' THEN 1 ELSE 0 END) AS 物品402使用数量,
    SUM(CASE WHEN cr.ITEMCODE = '403' THEN 1 ELSE 0 END) AS 物品403使用数量
FROM 
    CAFTRXHD cr
JOIN 
    STAFF s ON cr.EMPID = s.EMPID
JOIN 
    CAFUNIT cu ON s.UNITCTR = cu.UNITCTR
WHERE 
    cr.ITEMCODE BETWEEN '397' AND '403'
GROUP BY 
    cu.UNITDSC
ORDER BY 
    cu.UNITDSC;

说明

  • 使用CASE表达式对每个物品编码单独判断,符合条件则计数1,否则0;
  • 用SUM汇总每个部门对应物品的总使用次数;
  • 同样,若有物品数量字段,将1替换为对应的数量字段即可。

注意事项

  • 数据类型匹配:确认ITEMCODE是字符串还是数字类型,调整SQL中的单引号;
  • 空值处理:如果需要包含从未使用过指定物品的部门,将JOIN替换为LEFT JOIN,并可用COALESCE函数将NULL转为0;
  • 去重需求:若CAFTRXHD存在重复的BILLNO记录,使用COUNT(DISTINCT cr.BILLNO)代替COUNT(cr.BILLNO)避免重复统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22