SQL SERVER 分组后使用Having Count bug小记

今天碰到一个很有意思的bug,就是分组后过滤使用Having Count,特别记录一下。

事情是这样的,由于我们有个样品子表用来按样品条码存放的表,因为每个任务对应多个样品,每个样品需要打码记录,并且可以分别处理,退库和处理(返厂,报废等),处理的样品有处理编号,我们 在查询同一个任务样品处理只是部分处理,如下SQL 语句

 SELECT produce_id,  deal_no 
        FROM dbo.produce_sub
        GROUP BY produce_id, deal_no
        HAVING (COUNT(*) > 1) 

其中有个任务3个样品,但是只处理了1个,这样一个有处理编号,而另两个为空NULL,

本意是获取两条记录,分组没问题,但是加上HAVING Count(*) 只显示一条,这就违背意愿,

后猜测deal_no 为NULL的原因,后改

 SELECT produce_id, ISNULL(deal_no, '-') AS deal_no
        FROM dbo.produce_sub
        GROUP BY produce_id, deal_no
        HAVING (COUNT(*) > 1) 

这样就没问题了

记录一下,挺有意思的小bug,便于以后回查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值