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

如何将#SourceData按TrackingNumber分组,将奇偶行转为Date1/Date2列?

数据转换需求与解决方案

需求说明

需将#SourceData表的数据转换为#FinalData表格式,规则如下:

  • 以TrackingNumber列为分组依据
  • 按RowNumber列对日期进行排序
  • RowNumber为奇数的日期放入Date1列,偶数的放入Date2列
  • 支持单个TrackingNumber包含超过100条日期数据的场景

示例数据

源表(#SourceData)

CREATE Table #SourceData 
(
    TrackingNumber int NULL,
    Date1 date NULL,
    Date2 date NULL,
    RowNumber int NULL
);

INSERT INTO #SourceData
      SELECT 3   , '09/18/2016', NULL, 1
UNION SELECT 3   , '12/21/2016', NULL, 2
UNION SELECT 12  , '01/30/2018', NULL, 1
UNION SELECT 12  , '01/30/2018', NULL, 2
UNION SELECT 12  , '03/01/2019', NULL, 3
UNION SELECT 12  , '03/05/2019', NULL, 4
UNION SELECT 12  , '04/19/2020', NULL, 5
UNION SELECT 23  , '02/14/2017', NULL, 1
UNION SELECT 130 , '04/12/2017', NULL, 1

目标表(#FinalData)

CREATE Table #FinalData 
(
    TrackingNumber int NULL,
    Date1 date NULL,
    Date2 date NULL
);

INSERT INTO #FinalData
      SELECT 3   , '09/18/2016', '12/21/2016'
UNION SELECT 12  , '01/30/2018', '01/30/2018'
UNION SELECT 12  , '03/01/2019', '03/05/2019'
UNION SELECT 12  , '04/19/2020', NULL
UNION SELECT 23  , '02/14/2017', NULL
UNION SELECT 130 , '04/12/2017', NULL

解决方案代码

WITH PairedData AS (
    SELECT 
        TrackingNumber,
        Date1 AS OriginalDate,
        RowNumber,
        -- 计算配对组:每两行一组,奇数行与偶数行归为同一组
        CEILING(RowNumber / 2.0) AS PairGroup
    FROM #SourceData
)
SELECT 
    TrackingNumber,
    -- 提取组内奇数行的日期作为Date1
    MAX(CASE WHEN RowNumber % 2 = 1 THEN OriginalDate END) AS Date1,
    -- 提取组内偶数行的日期作为Date2
    MAX(CASE WHEN RowNumber % 2 = 0 THEN OriginalDate END) AS Date2
FROM PairedData
GROUP BY TrackingNumber, PairGroup
ORDER BY TrackingNumber, PairGroup;

方案说明

  • 通过CEILING(RowNumber / 2.0)生成配对组,自动将连续的奇数、偶数行归为一组,无需硬编码处理行数上限
  • 利用CASE表达式结合MAX聚合函数,分别提取每组内的奇数行日期(Date1)和偶数行日期(Date2)
  • 支持任意数量的日期数据,即使单TrackingNumber超过100条也能正常处理

内容的提问来源于stack exchange,提问作者Jeff.Clark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:58