首页 > 解决方案 > max 函数在有 case when 子句时没有

问题描述

我有两张桌子。一个如下

表一

身份证,计数
1, 123
2, 123
3, 123

表b

身份证,计数

表 b 为空

使用时

 
选择案例
    WHEN isnotnull(max(b.count)) THEN max(a.count) + max(b.count)
    ELSE max(a.count)
从 a, b

唯一的结果总是 NULL 我很困惑。为什么?

标签: sqlhive

解决方案


由于,表b是空的,max(b.count)将返回NULL。并且使用 NULL 完成的任何操作都会导致NULL.

所以,max(a.count) + max(b.count) 是NULL。(this is 123 + NULL which will be NULL always). 因此,您的查询返回 NULL。

每当 NULL 出现时,只需使用 acoalesce来分配默认值。


推荐阅读