繁体   English   中英

根据同一个表中其他列的值为列分配值

[英]Assign value to a column based on values of other columns in the same table

我有一个包含日期和订单列的表。 我想在此表中添加一个名为Batch的列,其填充方式如下:对于每个Date,我们从第一个Order开始,并在一个批处理中对每两个订单进行分组。

这意味着对于本例中Date = 1的记录(前4个记录),前两个记录(Order = 10和Order = 30)将具有批号:Batch = 1,接下来的两个记录(Order = 80和Order = 110)将具有Batch = 2,依此类推。

如果最后剩余记录的数量小于批量大小(在此示例中为2),则剩余的订单将具有单独的批次编号,如下例所示,具有Date =的记录数量2是奇数,所以最后一条记录(第5条记录)将有Batch = 3。

Date  Order
-----------
1      10

1      30

1      80

1      110

2      20

2      30

2      50

2      70

2      120

3      90

Date  Order Batch
------------------
1      10     1

1      30     1

1      80     2

1      110    2

2      20     1

2      30     1

2      50     2

2      70     2

2      120    3

3      90     1

使用解析函数row_number在每个日期内获取行号1,2,3,.... 然后加一个并除以二:

select 
  dateid, 
  orderid, 
  trunc((row_number() over (partition by dateid order by orderid) +1 ) / 2) as batch
from mytable;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM