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

如何通过SQL查询在Snowflake中实现多列合并为单列并生成交叉组合的输出表

实现Snowflake中src/dst列拆分后交叉组合的SQL方案

当然可以实现这个需求!利用Snowflake支持的LATERAL JOIN,我们可以轻松对每行的src和dst值进行拆分,再做交叉组合。以下是直接可用的SQL查询:

SELECT
    t.Date,
    src_options.src,
    dst_options.dst,
    t.Value
FROM TABLE1 t
-- 拆分当前行的src_country和src_state为独立的src值
LATERAL (
    SELECT t.src_country AS src UNION ALL
    SELECT t.src_State AS src
) src_options
-- 拆分当前行的dst_country和dst_state为独立的dst值,并与src做交叉组合
LATERAL (
    SELECT t.dst_country AS dst UNION ALL
    SELECT t.dst_state AS dst
) dst_options
-- 可选:按src和dst排序,匹配你给出的输出顺序
ORDER BY src, dst;

逻辑解释:

  • 拆分src列:第一个LATERAL子查询会把原表每行的src_country和src_State拆分成两条独立的记录,比如原表第一行的a和d会变成两个单独的src值。
  • 拆分dst列并交叉:第二个LATERAL子查询同理拆分dst_country和dst_state,同时因为是和第一个LATERAL子查询关联,会自动生成每行所有src值和所有dst值的交叉组合(每行生成2*2=4条记录)。
  • 保留原字段:我们直接引用原表的Date和Value,确保每条交叉后的记录都继承原行的这两个字段值。

执行这个查询后,会生成你需要的12条记录,和你给出的输出结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:53:12