我有一个查询,其中有“TEST”。“TABLE”左转到PUBLIC."SchemaKey“。现在,在我的最后select语句中,我有一个case语句,在该语句中,我检查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"谢谢!
发布于 2022-03-15 21:06:59
https://stackoverflow.com/questions/71481009
复制相似问题