首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花case语句正在返回一个错误,而不是在ELSE子句中指定的值。

雪花case语句正在返回一个错误,而不是在ELSE子句中指定的值。
EN

Stack Overflow用户
提问于 2021-03-08 14:48:04
回答 1查看 459关注 0票数 2

我需要检查一个或多个字段是否已经存在于表中,以便可以使用它们执行merge into语句。

我试过这个:

代码语言:javascript
复制
select sat_sector_hkey,
CASE 
    WHEN EXISTS(select id from hub_sector)
    THEN (MERGE INTO ...)
END AS id
from sat_sector;

在测试中,我只使用了一个case语句,并用一个THEN...ELSE值替换了merge into

代码语言:javascript
复制
SELECT sat_sector_hkey,
CASE 
    WHEN EXISTS(select id from hub_sector)
    THEN '1'
    ELSE ''
END AS id
FROM sat_sector;

当此字段不存在时,查询将返回一个错误而不是''

SQL编译错误:错误第3行,位置23,无效标识符'ID‘

我使用CASE,因为我需要检查列是否存在,因为我不知道它是否存在,因为我们的数据中有来自多个来源的一些技术细节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-08 22:06:03

试试这个:

  • 用整行.
  • 测试构造一个对象,如果构造的对象有“ID”的数据.

代码语言:javascript
复制
create or replace temp table maybe_id
as 
select 1 x, 2 id;

select *, 
case 
   when object_construct(a.*):ID is not null
   then '1'
   else ''
end as id 
from maybe_id a
;

适用于我--当列id有数据时,它给出1,在表中不存在列时,给出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66531931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档