sql - is not null 不消除空值
问题描述
有人可以帮助并阐明为什么我仍然得到空值,即使表连接中的一个条件指定替代单元不能为空值。
SELECT DISTINCT
CASE when oplistm.unit_code = 'CASE' then ROUND(oplistm.price / conv_factor,2)
when oplistm.unit_code = 'KG' then ROUND(oplistm.price * conv_factor,2)
WHEN oplistm.unit_code = 'EACH' and stu.converted_unit = 'KG' and stu.converted_unit is not null then ROUND(oplistm.price / conv_factor,2)
WHEN oplistm.unit_code = 'EACH' and stu.converted_unit = 'CASE' and stu.converted_unit is not null then ROUND(oplistm.price * conv_factor,2)
end as 'alternative unit price',
stu.converted_unit as 'alternative unit'
FROM sys030.scheme.oplistm oplistm (nolock)
left join sys030.scheme.stockm stockm (nolock) on stockm.product = oplistm.product_code
LEFT join sys030.scheme.stunitpm as stu (nolock) on stu.product = oplistm.product_code and stockm.warehouse = stu.warehouse and stu.base_name = stockm.unit_code and stu.converted_unit is not null
WHERE oplistm.product_code <>'LIC' and oplistm.product_code <> '' and stockm.product = 'M-47-68-BR-02-XX'
解决方案
on
您在外连接的子句中有这个条件:
stu.converted_unit is not null
尽管它确实过滤掉了 的converted_unit
值NULL
,但LEFT JOIN
可能只是将它们重新添加进来。
所以,如果你真的需要这个条件,把LEFT JOIN
s改成INNER JOIN
s。事实上,第一个实际上是一个INNER JOIN
因为WHERE
子句。
推荐阅读
- python - FileNotFoundError: [Errno 2] No such file or directory for different opening types
- python - 小马如何设置栏目评论
- css - 如何更改 .sub-head 的 z-index 以显示在悬停动画的 .navbar-fixed 下?
- python - Django:除非删除父模型,否则防止删除子模型
- reactjs - 如何使用提供的操作通过模拟 Axios 来编写一个笑话测试?
- makefile - 在不使用目标的情况下,如何防止目标的先决条件扩展?
- android - Android:如何处理 WorkManager Rx 的结果?
- python - 如何将包含日期的数据框转换为具有正确日期格式的列表并保存在 csv 文件中
- javascript - HTML5 视频 - 自动全屏显示
- java - 试图在我的集合中获取现有文档,但它返回 DocumentSnapshot 为空。有什么线索吗?