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

SQL查询如何固定Type列为Priority 1/2,无匹配统计值时显示0

SQL调整方案

核心思路是先生成包含两个固定优先级的基准行,再左关联你的统计结果,无匹配数据时自动补0,调整后代码如下:

SELECT 
    t.Type,
    COALESCE(s.userh1, 0) AS userh1
FROM 
    -- 构造固定优先级的基准行,确保两个取值一定会出现在结果中
    (VALUES ('Priority 1'), ('Priority 2')) AS t(Type)
LEFT JOIN 
    (
        SELECT 
            CASE 
                WHEN LEFT(DATA.LICLVS, 5) = '99999' 
                    THEN 'Priority 2' 
                    ELSE  'Priority 1' 
            END AS Type, 
            COUNT(DISTINCT LIVUID) as userh1 
        FROM
            DATA 
        WHERE 
            UPPER(LIVUID) <> 'ADMIN' 
            AND TRIM(LIVUID) IS NOT NULL 
            AND UPPER(LIVUID) <> 'ICMADMIN' 
            AND UPPER(LIVUID) <> 'CONTINGENC' 
            AND UPPER(LIVUID) <> 'INDEXUPDAT'   
            -- 原SQL此处引用了LOCALDATA字段,若DATA是表别名请自行修正对应表名
            AND DATA.LICRTD = '20211122' 
            AND LIVUID <> ''
            -- 简化原时间判断逻辑,避免多次类型转换
            AND VARCHAR_FORMAT(TIMESTAMP(CREATETS) + CURRENT TIMEZONE, 'HH24MI') BETWEEN '0900' AND '0929'
        GROUP BY 
            CASE
                WHEN LEFT(DATA.LICLVS, 5) = '99999' 
                    THEN 'Priority 2' 
                    ELSE 'Priority 1' 
            END
    ) AS s
ON t.Type = s.Type

额外优化说明:

  • 原查询WHERE条件已经限定了时间范围,因此删除了GROUP BY子句中冗余的时间分组条件
  • 将原复杂的时分判断简化为直接判断HH24MI格式的字符串范围,逻辑更简洁,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:03