gpt4 book ai didi

sql - Snowflake case 语句返回错误,而不是在 ELSE 子句中指定的值

转载 作者:行者123 更新时间:2023-12-04 07:59:47 24 4
gpt4 key购买 nike

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

select sat_sector_hkey,
CASE
WHEN EXISTS(select id from hub_sector)
THEN (MERGE INTO ...)
END AS id
from sat_sector;
为了测试,我只用了一个 case声明,并替换 merge intoTHEN...ELSE值(value)观:
SELECT sat_sector_hkey,
CASE
WHEN EXISTS(select id from hub_sector)
THEN '1'
ELSE ''
END AS id
FROM sat_sector;
当该字段不存在时,查询返回错误而不是 '' :

SQL compilation error: error line 3 at position 23 invalid identifier'ID'


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

最佳答案

尝试这个:

  • 用整行构造一个对象。
  • 测试构造的对象是否具有“ID”的数据。

  • 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
    ;
    对我有用 - 它给了 1当列 id 有数据时,`` 当该列不存在于表中时。

    关于sql - Snowflake case 语句返回错误,而不是在 ELSE 子句中指定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66531931/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com