我需要检查一个或多个字段是否已经存在于表中,以便可以使用它们执行merge into语句。
我试过这个:
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:
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,因为我需要检查列是否存在,因为我不知道它是否存在,因为我们的数据中有来自多个来源的一些技术细节。
发布于 2021-03-08 22:06:03
试试这个:
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,在表中不存在列时,给出。
https://stackoverflow.com/questions/66531931
复制相似问题