首页 > 解决方案 > 寻找替代 Postgres 的 CROSS JOIN LATERAL for Oracle

问题描述

所以我的公司正在从 Postgres 转移到 Oracle,我正在移动我在应用程序中的一个查询,该查询使用 CROSS JOIN LATERAL 来组合字段并创建一个自动完成的术语列表。以下是我用于 Postgres 的内容

SELECT 
DISTINCT terms as "catterms", tsource as "termsource"
FROM prodcats pc
INNER JOIN prodgenres pg on pc.productid = pg.productid
INNER JOIN genres g on pg.genreid = g.genreid
INNER JOIN products pn on pc.productid = pn.productid
INNER JOIN catnew cn on pn.modelcat = cn.categoryid
CROSS JOIN LATERAL ON (VALUES (cn.name, 'mc'), (g.name, 'pg'),
                    (pc.productsku, 'ps')) as t(terms, tsource) 
WHERE pc.categoryid = 42 ORDER BY termsource ASC, catterms ASC

我曾尝试在谷歌搜索上进行自己的尝试,但只能在 Oracle 和 unpivot 中使用 LATERALs 来组合列,但它们与我使用的旧查询等其他值不一致。在 Oracle 中运行此查询会给我“在 index::1 处缺少 IN 或 OUT 参数”您可以提供的任何帮助将不胜感激。

标签: sqloraclelateral-join

解决方案


推荐阅读