【发布时间】:2021-11-11 10:51:14
【问题描述】:
Snowflake CROSS JOIN 是否支持在连接中引用其他表?此语句产生错误:
SQL 编译错误:VALUES 子句中的表达式 [T.ID1] 无效
WITH t AS
(
SELECT *
FROM (VALUES
(1, 2)
, (3, 4)
) x(id1, id2)
)
SELECT
t.*
, x.*
FROM t
CROSS JOIN (VALUES
(t.id1)
, (t.id2)
) x(id3)
这在 MSSQL 中按预期工作(使用 CROSS APPLY 而不是 CROSS JOIN)。
但是,对交叉连接中的值进行硬编码是可行的,但对我的用例来说并不实用:
WITH t AS
(
SELECT *
FROM (VALUES
(1, 2)
, (3, 4)
) x(id1, id2)
)
SELECT
t.*
, x.*
FROM t
CROSS JOIN (VALUES
(1)
, (2)
, (3)
, (4)
) x(id3)
它产生了预期的结果:
ID1,ID2,ID3
1,2,1
3,4,1
1,2,2
3,4,2
1,2,3
3,4,3
1,2,4
3,4,4
还有其他方法可以在 Snowflake 中产生所需的结果吗?
【问题讨论】:
标签: snowflake-cloud-data-platform