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

SQL统计需求:仅计数Bags/Boxes数值>0的设施(站点访问)

解决方案

要实现只统计Bags或Boxes数值大于0的站点,你需要在查询中添加数值过滤条件,同时确保每个站点只被计数一次。

1. 核心修改思路

  • 过滤掉数值为0的记录(添加WHERE条件)
  • 对处理后的站点名称去重,避免同一站点因Bags和Boxes都大于0被重复计数

2. 具体SQL实现

假设你的WOCUSTFIELD表中有存储Bags/Boxes数值的字段(比如custfieldvalue),可以用以下查询:

统计单日期的有效站点数量

SELECT COUNT(DISTINCT
    CASE 
        WHEN wocustfield.custfieldname LIKE '%bags%'
            THEN REPLACE(wocustfield.custfieldname, 'bags:', '') 
        ELSE REPLACE(wocustfield.custfieldname, 'boxes:', '')
    END) AS ValidFacilityCount
FROM WOCUSTFIELD
JOIN WORKORDER ON WOCUSTFIELD.WORKORDERID = WORKORDER.WORKORDERID
WHERE 
    wocustfield.custfieldvalue > 0
    AND WORKORDER.ACTUALFINISHDATE = '2023-01-01'; -- 指定目标日期

按日期统计每日有效站点数量

如果需要批量统计每日数据,可以按日期分组:

SELECT
    WORKORDER.ACTUALFINISHDATE,
    COUNT(DISTINCT
        CASE 
            WHEN wocustfield.custfieldname LIKE '%bags%'
                THEN REPLACE(wocustfield.custfieldname, 'bags:', '') 
            ELSE REPLACE(wocustfield.custfieldname, 'boxes:', '')
        END) AS ValidFacilityCount
FROM WOCUSTFIELD
JOIN WORKORDER ON WOCUSTFIELD.WORKORDERID = WORKORDER.WORKORDERID
WHERE wocustfield.custfieldvalue > 0
GROUP BY WORKORDER.ACTUALFINISHDATE
ORDER BY WORKORDER.ACTUALFINISHDATE;

3. 逻辑说明

  • WHERE wocustfield.custfieldvalue > 0:直接排除所有数值为0的Bags/Boxes记录,只保留有实际访问的条目
  • COUNT(DISTINCT ...):确保同一站点即使同时有Bags和Boxes大于0,也只会被计数一次,最终得到正确的站点数量(示例中为3个)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:10:22