gpt4 book ai didi

tsql - 将相关行分成组

转载 作者:行者123 更新时间:2023-12-04 18:22:41 25 4
gpt4 key购买 nike

我有一些已证明难以处理的遗留产品数据。产品可以与 1、2 或 3 个部件一起出售,并且系统的设计方式是,订购产品的部件 2 和 3 只是该产品第一行之后的后续行。

这是一些示例数据....

----------------------------------------------------------
OrderId Sku Type Row_Id OtherColumns...
----------------------------------------------------------
123 001 Double 0 Other stuff..
123 001 Double 1 Other stuff..
123 001 Double 2 Other stuff..
123 001 Double 3 Other stuff..
123 002 Single 4 Other stuff..
123 003 Triple 5 Other stuff..
123 003 Triple 6 Other stuff..
123 003 Triple 7 Other stuff..
123 001 Double 8 Other stuff..
123 001 Double 9 Other stuff..
123 002 Single 10 Other stuff..
123 002 Single 11 Other stuff..
123 002 Single 12 Other stuff..
123 002 Single 13 Other stuff..

旧软件 (VB) 通过遍历行并在循环时向前看,从行中获取所需的信息,然后跳过它们来处理这个问题。

快进 8 年……我在新工作中继承了这个系统,并从头开始重写了这个系统。我遇到的问题是将旧数据转换为我的新格式。

我正在寻找一种方法来选择相同的数据,并按适当的段号对其进行分区。我使用 RANK() OVER(PARTITION BY) 没有成功。我想我只是做得不对。

理想情况下,我希望能够生成如下所示的结果集:(注意 Segment 列)
-------------------------------------------------------------------
OrderId Sku Type Row_Id Segment OtherColumns...
-------------------------------------------------------------------
123 001 Double 0 1 Other stuff..
123 001 Double 1 2 Other stuff..
123 001 Double 2 1 Other stuff..
123 001 Double 3 2 Other stuff..
123 002 Single 4 1 Other stuff..
123 003 Triple 5 1 Other stuff..
123 003 Triple 6 2 Other stuff..
123 003 Triple 7 3 Other stuff..
123 001 Double 8 1 Other stuff..
123 001 Double 9 2 Other stuff..
123 002 Single 10 1 Other stuff..
123 002 Single 11 1 Other stuff..
123 002 Single 12 1 Other stuff..
123 002 Single 13 1 Other stuff..

理想情况下,我想避免使用游标或循环。我将使用查询来迁移从多个表派生的数百万条记录。

在此先感谢您的帮助。

编辑
我已经更新了示例数据,以表明我确实有需要隔离的背靠背组。

最佳答案

select OrderId,
Sku,
Type,
Row_Id,
(row_number() over(partition by Type order by Row_Id) - 1) %
case Type
when 'Single' then 1
when 'Double' then 2
when 'Triple' then 3
end + 1
from YourTable
order by Row_Id

SQL Fiddle

关于tsql - 将相关行分成组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com