【发布时间】:2021-03-12 12:59:52
【问题描述】:
我正在尝试在雪花中运行查询:
SELECT DISTINCT RPU.RID,
RA.DATE,
COALESCE(RTH.CT, 0) as RCNT,
COALESCE (R.COMMENT_SITE, PR.COMMENT_SITE) as COMMENT_SITE,
##########################
COALESCE ((SELECT SPD FROM "DB"."SCHEMA"."PRD" WHERE
COMMENT_SITE = R.COMMENT_SITE AND CLOTH_ID = RPU.GPR
ORDER BY (IS_ACTIVE = false) LIMIT 1), PR.SPD) as SPD
#########################
FROM "DB"."SCHEMA"."CLOTH_USED" RPU JOIN "DB"."SCHEMA"."CAGR" RA ON RPU.RID = RA.RID
LEFT OUTER JOIN "DB"."SCHEMA"."PNTR_IMP" PR ON RPU.COMMENT_ID[1] = PR.ID
left outer join "DB"."SCHEMA"."COMMENTS" R ON RPU.COMMENT_ID[1] = R.ID
LEFT OUTER JOIN CLOTH_COUNT RTH ON RTH.CLOTH_ID = RPU.GPR
ORDER BY RPU.RID DESC, COALESCE(RTH.CT, 0) ASC, RA.DATE DESC LIMIT 1;
我得到的错误是:
SQL 编译错误:无法评估不受支持的子查询类型
以下查询工作正常:
SELECT DISTINCT RPU.RID,
RA.DATE,
COALESCE(RTH.CT, 0) as RCNT,
COALESCE (R.COMMENT_SITE, PR.COMMENT_SITE) as COMMENT_SITE,
FROM "DB"."SCHEMA"."CLOTH_USED" RPU JOIN "DB"."SCHEMA"."CAGR" RA ON RPU.RID = RA.RID
LEFT OUTER JOIN "DB"."SCHEMA"."PNTR_IMP" PR ON RPU.COMMENT_ID[1] = PR.ID
left outer join "DB"."SCHEMA"."COMMENTS" R ON RPU.COMMENT_ID[1] = R.ID
LEFT OUTER JOIN CLOTH_COUNT RTH ON RTH.CLOTH_ID = RPU.GPR
ORDER BY RPU.RID DESC, COALESCE(RTH.CT, 0) ASC, RA.DATE DESC LIMIT 1;
SQL 编译错误:无法评估不支持的子查询类型,添加时出现:
COALESCE ((SELECT SPD FROM "DB"."SCHEMA"."PRD" WHERE
COMMENT_SITE = R.COMMENT_SITE AND CLOTH_ID = RPU.GPR
ORDER BY (IS_ACTIVE = false) LIMIT 1), PR.SPD) as SPD
如何更正查询?问题在于 where 子句,而没有 where 可以正常工作。如何重写查询?
【问题讨论】:
-
你能不能用 COLAESCE 函数运行子查询,看看是否有效。
-
@hkandpal 如果我删除 where 条件,它可以工作,但在 where 条件下它不起作用。
-
问题是当我对这些值进行硬编码时,它无法引用 R.COMMENT_SITE 和 RPU.GPR
标签: sql snowflake-cloud-data-platform