Hive 中的 CASE 语句

2024-06-25

好的,我有以下代码来用二进制标志标记表中具有最高 Month_cd 的记录:

Select t1.month_cd, t2.max_month_cd
  ,CASE WHEN t2.max_month_cd != null then 0 else 1 end test_1
  ,CASE WHEN t2.max_month_cd = null then 0 else 1 end test_2
from source t1
Left join (
  Select 
    MAX(month_cd) as max_month_cd 
  From source 
) t2 
on t1.month_cd = t2.max_month_cd;

对我来说这似乎很简单,但它返回的结果是:

month_cd  max_month_cd  test_1  test_2
201610    null          1       1
201611    201611        1       1

对我来说毫无意义,而且似乎太明显了,不可能是执行引擎中的错误。我缺少什么?


这都是关于 NULL 概念的。

由于 Null 不是任何数据域的成员,因此它不被视为“值”,而是指示不存在值的标记。因此,与 Null 的比较永远不会产生 True 或 False,但总是产生第三个逻辑结果,Unknown。 NULL 代表什么都没有,没有对象。因此,没有什么不能等于 NULL 或其他值。 SQL中有IS NULL and IS NOT NULL用于测试空值的条件。

在您的 CASE 中,逻辑表达式的结果未知,因此分配了 ELSE 值。

更正版本:

CASE WHEN t2.max_month_cd IS NOT null then 0 else 1 end test_1,
CASE WHEN t2.max_month_cd IS null     then 0 else 1 end test_2

请参阅此以供参考:空(SQL) https://en.wikipedia.org/wiki/Null_(SQL)#Comparisons_with_NULL_and_the_three-valued_logic_.283VL.29

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 中的 CASE 语句 的相关文章

  • 选择仅属于特定部门的用户

    我有下表 其中包含两个字段 即 a 和 b 如下所示 create table employe empID varchar 10 department varchar 10 插入一些记录 insert into employe values
  • 安卓。是否可以在 C/C++ 上编写自定义函数并在 SQL 查询中使用它?

    SQLite3不支持存储过程 是否可以在 C C 上编写自定义函数并在 SQL 查询中使用它 类似的东西 SELECT FROM table WHERE CUST FUNCTION name1 name2 1 or SELECT CUST
  • MySQL:在一条语句上连接多个表

    我有以下数据库结构 层次结构 TABLE 产品类别 id name TABLE product id parent id name 父 ID 是产品类型 ID TABLE treeNode id parent id name type 它是
  • 如何在 MariaDB 或 MySQL 中创建文本类型的外键?

    我有两张桌子 CREATE TABLE first table my id TEXT 6 NOT NULL content VARCHAR 30 NOT NULL PRIMARY KEY my id 6 Engine InnoDB char
  • 原则 2 使用 LIKE 进行查询

    我有这个查询代码 repository em gt getRepository AcmeCrawlerBundle Trainings query repository gt createQueryBuilder p gt where p
  • ORACLE 更新并返回 OLD 和 NEW 值

    PL SQL Oracle 12c 中是否有与此 T SQL 查询等效的内容 UPDATE A SET A columnA 10 WHERE A columnB lt 30 OUTPUT INSERTED DELETED 查询更新表A 同时
  • ORA-01719: OR 或 IN 的操作数中不允许有外连接运算符 (+)

    运行查询时出现错误 ORA 01719 OR 或 IN 的操作数中不允许有外连接运算符 01719 00000 OR 或 IN 的操作数中不允许使用外连接运算符 原因 or 子句中出现外连接 动作 如果A和B是谓词 要得到 A 或B 的效果
  • MySQL 将所有空格替换为 -

    我怎样才能删除一行中的所有空格 我在这里看到很多相同的问题 但所有答案都使用替换选项 替换只能去除一个空格 而不是全部 例如 a b c 变为 a b c Thanks 这可以通过以下 MySQL 函数来实现 SELECT REPLACE
  • 检查行是否存在,Laravel

    我有以下数据库结构 items id name user id users table id name user favorites table id user id item id 在我的项目永久链接页面上 我有一个 添加到收藏夹 按钮
  • 在 CodeIgniter、SQL 中调用布尔值的成员函数 result()

    我试图根据搜索关键字查看 data results 中有哪些数据 但每次都会出现上述致命错误 有人可以帮助我吗 我的控制器 public function execute search search term this gt input g
  • 如何加载大量字符串与oracle数据库匹配?

    我目前正在学习 PL SQL 所以我还是一个新手 假设您有一个生产数据库 并使用 Oracle SQL Developer 连接到该数据库 您对该数据库仅有读取权限 因此您无法创建或编辑任何表 我的问题是 如果我有一个很大的 ID 列表 我
  • 如何在 SQL 中将 varchar 列拆分为多个值?

    我有这个 SQL Select 语句 SELECT AD Ref List Value FROM AD Ref List WHERE AD Ref List AD Reference ID 1000448 这是 SELECT 的结果 为了限
  • INSERT INTO 存储过程的输出

    我正在编写一个存储过程 首先在表中插入一个新行 然后 另一个查询需要此查询生成的 ID 是否可以使用 OUTPUT 访问预先生成的 ID 这就是我到目前为止所做的 这几乎是一个猜测 但没有成功 ALTER PROCEDURE dbo add
  • 使用 C# 检索 SQL Server 中具有 varchar 数据类型的字段的大小

    我正在使用 VS 2010 和 SQL Server 2008 在 ASP NET 中创建一个项目 我想检索具有以下内容的列的大小varchar数据类型 e g Varchar 20 我想要 20 而不是最大可能的大小varchar使用 C
  • 根据多列删除重复记录

    在我们的系统中 我们每小时从外部数据库进行导入 由于导入脚本中存在错误 现在存在一些重复记录 如果任何记录具有相同的内容 则视为重复 legacy id and company 我可以运行什么代码来查找并删除这些重复项 我正在玩这个 Pro
  • 即使为空也显示值

    我正在使用以下内容显示过去 7 天内添加的产品计数 即使 COUNT 0 我是否可以以某种方式定制查询以显示过去 7 天的所有产品 查询现状 SELECT DAYNAME dateadded DAY COUNT COUNT FROM pro
  • 通过sql视图向多个表插入数据

    mysql 有没有办法通过视图向多个表插入数据 MySQL 参考手册对于可更新视图是这样说的 一些视图是可更新的 也就是说 您可以在诸如以下的语句中使用它们UPDATE DELETE or INSERT更新基础表的内容 为了使视图可更新 必
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • oozie 如何处理依赖关系?

    我对 oozie 2 3 共享库有几个问题 目前 我在 coordinator properties 中定义了共享库 oozie use system libpath true oozie libpath

随机推荐

  • 在 python 中编写轮询函数的更好方法

    我写了一个轮询函数来检查reg result可变 120 秒 reg result 0 while timeout time time 120 while reg result is not REGISTERED and time time
  • ESLint 扩展与插件 v2020

    有回复了question https stackoverflow com questions 53189200 whats the difference between plugins and extends in eslint在我看来 这
  • 如何在 Perl 中不阻塞地测试 STDIN?

    我正在编写我的第一个 Perl 应用程序 一个 AOL Instant Messenger 机器人 它与 Arduino 微控制器对话 后者控制一个伺服系统 按下我们系统管理员服务器上的电源按钮 该服务器每 28 小时左右就会随机冻结一次
  • 关注点分离:什么时候最好将语义与语法分离?

    Choices 类型类的出色之处在于它们允许我们将额外的结构连接到现有类型 从而使我们能够推迟一些设计决策 而不是在构思时匆忙做出决定 另一方面 例如 在面向对象编程中 我们被迫考虑类型需要立即执行什么操作 以及稍后出现的或需要的任何附加结
  • Excel 中数字的条件格式(自定义格式)具有多个条件

    我想根据单元格中的值动态地将数字格式化为 M 百万 B 十亿 或 K 千 我尝试过 但这不起作用 gt 1000000000 0 B gt 1000000 0 M gt 1000 0 K 0 如果我给出任意两个条件 它就会起作用 例如 gt
  • 如何持续交付基于SQL的应用程序?

    我希望将持续交付概念应用到我们正在构建的 Web 应用程序中 并想知道是否有任何解决方案可以保护数据库免受意外错误提交的影响 例如 删除整个表而不是单个记录的错误 根据持续交付原则 如何限制这个问题的影响 即应用程序逐渐部署在基础设施的各个
  • “‘测试’模块错误导入”是什么意思?

    我已经逐行复制了一个工作测试 只是更改了一些名称 至少我是这么认为的 现在我得到了这个非常神秘的错误 我用 FOO BAR 替换了一些东西 ImportError tests module incorrectly imported from
  • 来自 NSString 的 iOS SecKeyRef

    我需要使用公钥将用户密码加密为 Base64 字符串 公钥是一个 NSString 像这样的东西 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgWO7p1AvCaHUeaM6rSczBBAqt mKObHx
  • PhpStorm 无法识别 PHP 类

    今天早上我遇到了这个问题 我不知道如何解决这个问题 这是一个image https i stack imgur com Ampmj png和一个视频 http screencast com t 2ubAbwPj6 http screenca
  • 多个 AWS API Gateway API 作为同一 Lambda 函数的触发器

    我已经有一个 API Gateway API 作为我的 AWS Lambda 函数的触发器 然而 当我尝试将另一个 API 作为触发器添加到同一个 AWS Lambda 时 它抛出了一个错误 创建触发器时出错 此方法上已存在集成 即使我从
  • 挂钩到文件,实时读取新内容

    我如何连接到另一个程序当前正在使用的文件 该程序不断向该文件写入内容 假设有一个 10 行的文本文件 当我启动我的应用程序时 每次写入程序保存其内容时 它都必须检测并读取其中的任何内容 可以在不不断检查文件大小 日期的情况下完成此操作吗 您
  • c Sharp exe 在打开时应要求“以管理员身份运行”提示

    我有一个由 c Sharp 程序生成的 exe 当我运行 exe 时 我希望出现 UAC 提示 并提供以管理员身份运行 exe 的选项 我见过默认以管理员身份运行 exe 的示例 但是 如何让 UAC 要求我以管理员身份运行 exe 任何想
  • 如何在 Java 中将公历转换为 Unix 时间?

    我需要一种将 GregorianCalendar 对象转换为 Unix 时间 即 long 的方法 还需要一种将 Unix 时间 长 转换回 GregorianCalendar 对象的方法 有没有什么方法可以做到这一点 如果没有 那我该怎么
  • Grails Spring Security 插件 - 修改登录用户的权限

    我有一个简单的 Grails 应用程序 安装了 Spring Security Core 插件并且工作正常 但是 我还没有找到任何解决方案来解决在安全上下文中更新登录用户权限的问题 我不是在谈论更新当前用户的详细信息 即 springSec
  • 核心数据是否始终将返回对象视为错误?

    在下面的代码中 我显式地将 returnObjectsasFaults 设置为 false 然后在请求之后我立即检查对象是否有故障 NSAssert 失败 也许是因为该对象是 imageBlob 也许我错过了什么 我只是想确定一下 这是一个
  • 在 Mac 上测试 ICE 网页设计的最佳方法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在 Mac 上设计一个网站 该设计在 Chrome Safari 和 Firefox 中运行良好 现在我将使用不同版本的 In
  • java中如何重写一个方法然后调用超类方法

    我试图重写我的 java 子类中的超类中的方法 然后从超类中调用重写的方法 这是正确的方法吗 我想要重写的超类中的方法称为describe public static void describe Item describe Use the
  • 使会话 Spring Security 无效

    我的网络应用程序使用 spring security 在登录时对用户进行身份验证 我还具有并发控制 以避免用户在不同的计算机上登录两次 这工作正常 但我的问题是 如果用户登录计算机 则关闭浏览器 然后他重新打开 Web 应用程序 尝试再次登
  • PHP 5 - 保护站点管理区域的安全

    我目前正在使用 Kohana 作为框架编写几个 MVC 站点 每个都有一个简单的管理区域 管理员可以在其中上传和编辑内容 我目前正在将管理员的用户模型存储在会话中 并使用以下方法检查他们是否是管理员 private function che
  • Hive 中的 CASE 语句

    好的 我有以下代码来用二进制标志标记表中具有最高 Month cd 的记录 Select t1 month cd t2 max month cd CASE WHEN t2 max month cd null then 0 else 1 en