如何在Teradata SQL中进行数值比较?

How to do numerical value comparison in Teradata SQL?

提问人:Yumeng Xu 提问时间:6/13/2022 最后编辑:Yumeng Xu 更新时间:6/13/2022 访问量:52

问:

目标是在 Teradata SQL 中创建多个数据范围的用例

我在Teradata SQL中的代码是:

select 
case when a <= 5 then b 
     when (5 < a < 6) then c 
     else 0 end 
from datadate

A 列包含 1、2、3 等数字

错误标志在第一个<显示,因为 SQL 需要以下之一:'at'...'day', 'hour'

如何在Teradata SQL中执行数值比较?当我尝试使用比较符号(如 <、>、<=)时,Teradata SQL 总是假设我正在比较时间/日期。

SQL 比较 案例 Teradata

评论

0赞 Roshan Nuvvula 6/13/2022
什么是列数据类型?
0赞 Yumeng Xu 6/13/2022
列数据是数字,例如 1、3、5
0赞 Roshan Nuvvula 6/13/2022
不需要对 then stmt 使用单引号?case when a <= 5 then 'b' when (5 < a < 6) then 'c' else '0' end as cond
0赞 Yumeng Xu 6/13/2022
不幸的是,它不是这样工作的。仍然得到相同的错误代码
2赞 NickW 6/13/2022
请使用 datadate 表的 ddl 更新您的问题,并添加完整的错误消息

答:

1赞 dnoeth 6/13/2022 #1

您只能比较两个操作数:

case when a <= 5 then b 
     when 5 < a AND a < 6 then c 
     else 0 
end 

但是,由于 CASE 返回第一个 WHEN 计算为 TRUE:

case when a <= 5 then b 
     when a < 6 then c -- all values <= 5 are already returned by the 1st when
     else 0 
end