【发布时间】:2013-11-02 06:21:06
【问题描述】:
Oracle 在创建实体化视图时限制在 select 子句中使用子查询。执行此操作时,您会收到错误“ORA-22818:此处不允许子查询表达式”。
由于这个限制,我一直在努力重写查询并将子查询移出 select 子句。该查询使用父/子关系递归地构建路径,我还试图通过将表连接回自身并查看记录是否有子项来指示特定类别是否为叶类别。
SELECT A.PRODUCTCATEGORYID, A.PARENTCATEGORYID, SYS_CONNECT_BY_PATH(A.LABEL, ':') "PATH",
(
SELECT CASE WHEN MAX(PRODUCTCATEGORYID) IS NOT NULL THEN 0 ELSE 1 END
FROM PRODUCT_CATEGORY
WHERE parentcategoryid = A.PRODUCTCATEGORYID
) as "LEAF"
FROM PRODUCT_CATEGORY A
CONNECT BY PRIOR A.PRODUCTCATEGORYID = A.PARENTCATEGORYID
START WITH A.PARENTCATEGORYID IS NULL;
谁能指出我应该如何重写它以使子查询不属于 select 子句的正确方向?
提前致谢。
【问题讨论】:
标签: oracle subquery materialized-views