簡體   English   中英

SELECT SNOWFLAKE 中 CASE 語句中的語句

[英]SELECT statement inside a CASE statement in SNOWFLAKE

我有一個查詢,其中我有“TEST”。“TABLE” LEFT JOINED 到 PUBLIC。“SchemaKey”。 現在在我最后的 select 語句中,我有一個案例語句,我檢查 c."Type" = 'FOREIGN' 然后我想從另一個表中獲取一個值,但我在該 select 語句中使用的表名稱值來自左聯接表列值。 我嘗試了多種方法來開始工作,但我一直收到錯誤消息,盡管如果我對表名進行硬編碼,它似乎可以工作。 我需要表名來自 c."FullParentTableName"。 我想在雪花中實現的目標是什么,有沒有辦法讓它發揮作用? 任何幫助,將不勝感激 !

SELECT 
c."ParentColumn",
c."FullParentTableName",
a."new_value",
a."column_name"
CASE WHEN c."Type" = 'FOREIGN' THEN (SELECT "Name" FROM TABLE(c."FullParentTableName") WHERE "Id" = 'SOME_ID') ELSE null END "TestColumn" -- Need assistance on this line...
FROM "TEST"."TABLE" a
LEFT JOIN (
    select s."Type", s."ParentSchema", s."ParentTable", s."ParentColumn", concat(s."ParentSchema",'.','"',s."ParentTable",'"') "FullParentTableName",s."ChildSchema", s."ChildTable", trim(s."ChildColumn",'"') "ChildColumn"
    from PUBLIC."SchemaKey" as s
    where s."Type" = 'FOREIGN'
    and s."ChildTable" = 'SOMETABLENAME'
    and "ChildSchema" = 'SOMESCHEMANAME'
) c
on a."column_name"  = c."ChildColumn"

謝謝 !

在 Snowflake 中,您不能動態地將部分結果用作表格。

您可以通過標識符使用單個綁定值將值綁定到表名

但是您可以編寫 Snowflake 腳本,但它需要顯式連接 N 個表。 因此,如果你的 N 是固定的,你應該加入那些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM