为表中的行创建组编号

时间:2018-06-04 10:28:55

标签: sql oracle

我有一个包含6000条记录的表,前100条记录应该是批处理1,第二条100应该是批处理2,依此类推。请帮我解决下面的SQL查询 问题

下面是我想要数据的示例

输入

data
1
2
3
4
5
6
7
8
9
10
11
12

我希望输出为

data  batch
1     Batch-1
2     Batch-1  
3     Batch-1
4     Batch-1
5     Batch-2
6     Batch-2
7     Batch-2
8     Batch-2
9     Batch-3
10    Batch-3
11    Batch-3
12    Batch-3

1 个答案:

答案 0 :(得分:5)

您可以使用ROW_NUMBER分析函数来获取100个项目的批次:

SELECT t.*,
       'Batch-' || CEIL( ROW_NUMBER() OVER ( ORDER BY data ) / 100 ) AS batch
FROM   table_name t;

或者,如果data是连续的,那么:

SELECT t.*,
       'Batch-' || CEIL( data / 100 ) AS batch
FROM   table_name t;