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句の一部にならないように、これをどのように書き直すべきか、誰かが私を正しい方向に向けることができますか?
前もって感謝します。