sql - 如何计算不同的值以排除值?
问题描述
以下是 POS 系统中的不同比例。我正在尝试计算不是“MANUAL WT”的不同比例的数量。
这就是我所拥有的,但它返回 2 而不是 6. count (distinct (distinct (case when d.SCALE_IN_ID != 'MANUAL WT' then 1 else 0 end)) as Num_Scale
解决方案
考虑:
select count(distinct case when scale_in_id <> 'MANUAL WT' then scale_in_id end) cnt
from mytable
原始查询的问题在于case
表达式将值转换为0
and 1
,然后聚合函数计算返回了多少不同的值:因为值都是0
s 或1
s,所以只有两个不同的值(或者在边缘情况下只有一个) : 因此你得到的结果。
推荐阅读
- python - 二进制:在数组中生成所有可能性
- javascript - 所有其他项目的值更新(反应)
- javascript - 平衡括号。确定必须插入的最小字符数
- windows - 调用 msiexec 的 Windows 服务不会更新服务
- python - 如何通过用户输入控制循环次数?
- c# - 当我尝试将图像转换为 webp 时,ImageProcessor 引发异常
- javascript - 警告:从 submitForm() 捕获到未处理的错误,[TypeError: undefined is not an object (evalating '_context.t0.response.data')]
- swift - 如何删除重复代码并使干净的代码迅速?
- php - 如何选择没有今天生日的客户?
- typescript - 类型“{}”不可分配给类型“记录”
'