在雪花中用“ LEVEL”重写查询

时间:2020-10-05 06:42:57

标签: sql database snowflake-cloud-data-platform recursive-query

如何将该SQL查询写入SNOWFLAKE?

按级别从双连接选择级别lv <= 3;

2 个答案:

答案 0 :(得分:1)

您可以使用CONNECT BY(https://docs.snowflake.com/en/sql-reference/constructs/connect-by.html)和此处(https://docs.snowflake.com/en/user-guide/queries-hierarchical.html)找到一些不错的起点。

Snowflake还支持递归CTE。

答案 1 :(得分:0)

似乎您想将行重复三遍。对于固定的小乘数(例如3),您可以枚举数字:

select c.lv, a.*
from abc a
cross join (select 1 lv union all select 2 union all select 3) c

本着原始查询的精神,一种更通用的方法是使用标准的递归common-table-expression生成数字:

with cte as (
    select 1 lv
    union all select lv + 1 from cte where lv <= 3
)
select c.lv, a.*
from abc a
cross join cte c