【发布时间】:2019-08-21 23:48:36
【问题描述】:
我正在尝试使用 CASE 语句中止/退出基于条件表达式的查询:
- 如果表有 0 行,那么查询应该会顺利进行。
- 如果表的行数 > 0,则查询应中止/退出。
drop table if exists #dups_tracker ;
create table #dups_tracker
(
column1 varchar(10)
);
insert into #dups_tracker values ('John'),('Smith'),('Jack') ;
with c1 as
(select
0 as denominator__v
,count(*) as dups_cnt__v
from #dups_tracker
)
select
case
when dups_cnt__v > 0 THEN 1/denominator__v
else
1
end Ind__v
from c1
;
这里是错误信息:
亚马逊无效操作:除以零; 1 条语句失败。
【问题讨论】:
-
错误是由
0 as denominator__v引起的,然后尝试除以该值。它不会总是返回错误吗? -
感谢约翰的回复。这里真正的问题是,Redshift SQL 正在尝试首先解析 case 条件值,然后进行树遍历。由于查询失败,甚至没有评估 CASE 表达式。我的要求是如果计数(*)> 0,如何退出/中止查询。我的意思是如果表中有任何行,那么查询错误或中止它。希望这会有所帮助。
标签: amazon-web-services amazon-redshift