You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake中用LATERAL JOIN实现SQL的OUTER APPLY功能?

在Snowflake中用LATERAL JOIN替代OUTER APPLY实现行转多行需求

Snowflake不支持OUTER APPLY,但可以通过LEFT JOIN LATERAL完全实现等价效果——包括保留原表所有行(对应OUTER APPLY的外部连接特性),同时为原表每行生成指定的多行数据。

针对你需要为原表每行生成3行数据的需求,直接将OUTER APPLY替换为LEFT JOIN LATERAL即可,具体实现如下:

完整SQL示例

假设你的原表名为your_table,包含Name、Surname、Age列:

SELECT 
    t.*,
    s.Point,
    s.Column2,
    s.Column3
FROM your_table t
LEFT JOIN LATERAL (
    VALUES 
        ('Point', t.Name, NULL),
        ('Surname', NULL, t.Surname),
        ('Age', t.Age, NULL)
) s (Point, Column2, Column3) ON TRUE;

核心说明

  • LEFT JOIN LATERAL等价于OUTER APPLY,会保留原表的每一行,哪怕VALUES子句无匹配数据
  • ON TRUE是因为VALUES子句是为原表每行生成固定的3行,无需额外连接条件
  • 如果不需要保留原表无匹配的行(等价于CROSS APPLY),可将LEFT JOIN LATERAL改为INNER JOIN LATERAL

内容的提问来源于stack exchange,提问作者Python_Hey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:01:19