使用逗号分隔 table 列表而不是 JOIN 关键字时将 Oracle(交叉连接?)转换为 Netezza

Convert Oracle (Cross Join?) to Netezza when using comma separated table list instead of JOIN keywords

下面是一些 Oracle PL/SQL 代码,用于在不使用实际 JOIN 关键字的情况下连接表。这看起来像交叉连接?我将如何转换为 Netezza SQL 代码?那就是我被困的地方。

SELECT COUNT(*) 
FROM TABLE_A A, TABLE_A B
WHERE A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';

Oracle 交叉连接:

http://www.sqlguides.com/sql_cross_join.php

这是我到目前为止尝试过的:

SELECT *
from TABLE_A A
cross join (
    select * from TABLE_A
) B
WHERE 
  A.X = 'Y' AND A.PATH LIKE '/A/A/A'
  AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';

编辑:

a_horse_with_no_name:

当我一开始在 Netezza 中对 COUNT(*) 使用任一语法时,它都有效,并且 returns 计数为 60,这与上面的第一个查询匹配,当 运行 在 Oracle 中.在 Netezza 中没有 WHERE 子句 returns 125316 结果,这与 Oracle 中 运行 时上面的第一个查询匹配。当我一开始在 Netezza 中对 SELECT * 使用任一语法时,我收到错误

ERROR [HY000] ERROR: Record size 70418 exceeds internal limit of 65535 bytes'

进行 CROSS JOIN 时必须在 Netezza 中使用显式列。使用 SELECT * 会抛出我的问题编辑中指出的错误。还必须通过不转义任何内容来转义“%”字符。谢谢a_horse_with_no_name。干杯! "Where everybody knows your name.";-)

select A.CODE, B.CODE, LOWER(A.DIM), LOWER(B.DIM)
FROM TABLE_A A
cross join TABLE_A B
WHERE A.PATH LIKE '\A\A\A%' ESCAPE '' AND A.X = 'Y'
AND B.PATH LIKE '\B\B\B%' ESCAPE '' AND B.X = 'Y'