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

如何基于单列生成多行组合?SQL表数据组合需求求解

解决方案

要实现同资产下不同RIGHTNAME的全量交叉组合,核心是先给重复的RIGHTNAME条目添加唯一序号后缀,再通过交叉连接生成所有可能的组合。以下是具体SQL实现:

步骤说明

  1. 给重复RIGHTNAME编号:使用窗口函数ROW_NUMBER(),按RIGHTNAME分组、按资产权利起始日期排序,为每个重复条目生成唯一序号,并拼接成R1_1这类带标识的名称。
  2. 生成交叉组合:将每个RIGHTNAME的编号结果集单独筛选出来,通过CROSS JOIN实现全量组合。

完整SQL代码

WITH numbered_rights AS (
    SELECT 
        RIGHTNAME || '_' || ROW_NUMBER() OVER (PARTITION BY RIGHTNAME ORDER BY ACQUISITIONBEGINDATE) AS right_with_id,
        RIGHTNAME
    FROM TEMP_RIGHT_ROLLUP_GROUP
    WHERE ASSETCODE = '10' -- 若需处理多资产可去掉此条件,后续组合时按资产分组即可
)
SELECT 
    r1.right_with_id AS R1,
    r2.right_with_id AS R2,
    r3.right_with_id AS R3
FROM 
    (SELECT right_with_id FROM numbered_rights WHERE RIGHTNAME = 'R1') r1
CROSS JOIN 
    (SELECT right_with_id FROM numbered_rights WHERE RIGHTNAME = 'R2') r2
CROSS JOIN 
    (SELECT right_with_id FROM numbered_rights WHERE RIGHTNAME = 'R3') r3;

输出结果

执行后将得到你期望的4种组合:

R1_1   R2_1   R3_1
R1_1   R2_1   R3_2
R1_2   R2_1   R3_1
R1_2   R2_1   R3_2

(注:R2仅有一条记录,因此序号为1;若后续新增R2条目,代码会自动适配生成对应序号的组合)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:02:04