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

如何将SQL中同ID不同SUBID的结果合并到同一行

解决方案

你可以通过窗口函数+自连接的方式将成对的D、X行合并,提取所需字段并整理格式,具体实现如下:

核心思路

  1. 给原始结果集中的每一行按ID和SUBID分组编号,确保同一组的D、X行拥有相同的序号;
  2. 通过ID和序号将D行与X行关联,提取X的Volume、D的Gross和Net,并将SUBID固定为X。

SQL代码实现

假设你的原始查询结果存储在临时数据集temp_data中(也可以直接将原查询替换到CTE语句里):

WITH numbered_data AS (
    SELECT 
        ID,
        SUBID,
        Volume,
        Gross,
        Net,
        -- 给每个ID下的D/X分别编号,确保对应行序号一致
        ROW_NUMBER() OVER (PARTITION BY ID, SUBID ORDER BY Gross NULLS LAST) AS row_num
    FROM temp_data
)
SELECT 
    d.ID,
    'X' AS SUBID,
    x.Volume,
    d.Gross,
    d.Net
FROM numbered_data d
INNER JOIN numbered_data x 
    ON d.ID = x.ID 
    AND d.row_num = x.row_num
WHERE d.SUBID = 'D' 
  AND x.SUBID = 'X'
ORDER BY d.ID, d.row_num;

逻辑说明

  • 窗口函数ROW_NUMBER()会给每个ID下的SUBID='D'行按Gross排序编号,同时给SUBID='X'行按规则同步编号,让每一对对应的D、X行拥有相同的row_num;
  • 自连接后,将X行的Volume与D行的Gross、Net拼接,最终得到目标格式的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:02:37