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

SQL Server 2014:REQ_ID为空时将COUNT_OF_REQ_LINES置为0的实现

解决SQL Server中REQ_ID为空时COUNT统计设为0的问题

嘿,这需求很清晰,我给你两个实用的实现方案,在SQL Server 2014里都能完美跑通:

方案一:CASE配合COUNT函数(推荐)

COUNT函数的特性是只会统计非NULL的值,我们可以利用这一点,让CASE语句仅在REQ_ID非空时返回有效统计标记,否则返回NULL,COUNT会自动忽略这些NULL值,最终得到你要的结果:

SELECT 
    B.PO_ID,
    -- 仅当REQ_ID非空时计入统计,空值时返回NULL被COUNT忽略,结果自然为0
    COUNT(CASE WHEN B.REQ_ID IS NOT NULL THEN 1 END) AS COUNT_OF_REQ_LINES
    -- 这里可以继续添加你需要查询的其他列
FROM 
    -- 替换成你的表名和关联逻辑
    YourTable B
    -- 如果有JOIN关联请写在这里
GROUP BY 
    B.PO_ID;

方案二:SUM配合CASE语句

如果你更习惯用SUM来实现计数逻辑,这种写法会更直观:

SELECT 
    B.PO_ID,
    -- REQ_ID非空时加1,否则加0,求和后就是符合条件的行数
    SUM(CASE WHEN B.REQ_ID IS NOT NULL THEN 1 ELSE 0 END) AS COUNT_OF_REQ_LINES
    -- 其他列...
FROM 
    YourTable B
GROUP BY 
    B.PO_ID;

非聚合场景的处理

如果你的查询没有GROUP BY(也就是单条记录的非聚合场景),按照需求要让COUNT_OF_REQ_LINES保持为0,直接写就行:

SELECT 
    B.PO_ID,
    0 AS COUNT_OF_REQ_LINES
    -- 其他列...
FROM 
    YourTable B;

这两种聚合方案都能精准满足需求:当某个PO_ID对应的所有REQ_ID都为空时,COUNT_OF_REQ_LINES就是0;只要存在非空的REQ_ID,就会统计对应的有效行数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:46:39