首页 > 解决方案 > 如何计算不同的值以排除值?

问题描述

以下是 POS 系统中的不同比例。我正在尝试计算不是“MANUAL WT”的不同比例的数量。

这就是我所拥有的,但它返回 2 而不是 6. count (distinct (distinct (case when d.SCALE_IN_ID != 'MANUAL WT' then 1 else 0 end)) as Num_Scale

在此处输入图像描述

标签: sqlcountdistinct

解决方案


考虑:

select count(distinct case when scale_in_id <> 'MANUAL WT' then scale_in_id end) cnt
from mytable

原始查询的问题在于case表达式将值转换为0and 1,然后聚合函数计算返回了多少不同的值:因为值都是0s 或1s,所以只有两个不同的值(或者在边缘情况下只有一个) : 因此你得到的结果。


推荐阅读