oracle-按组为分区分配序列
使用上面的查询时,如何为每个组分配sequence.nextval?我想到了一种仅使用SQL的方法。关键是为每个分区条件只返回一行,并为每个值获取序列值oracle-按组为分区分配序列,oracle,partition,Oracle,Partition,使用上面的查询时,如何为每个组分配sequence.nextval?我想到了一种仅使用SQL的方法。关键是为每个分区条件只返回一行,并为每个值获取序列值 select row_number() over(partition by col1,col2), col1, col2, col3 from table1 where xxxx... 使用PL/SQL,您可以循环查询结果并更新每个分区: MERGE INTO table1 USING (SELECT col1, col2,
select row_number() over(partition by col1,col2), col1, col2, col3
from table1
where xxxx...
使用PL/SQL,您可以循环查询结果并更新每个分区:
MERGE INTO table1
USING (SELECT col1, col2, your_sequence.NEXTVAL AS seq
FROM (SELECT DISTINCT col1, col2 FROM table1)) s
ON (table1.col1 = s.col1 AND table1.col2 = s.col2)
WHEN MATCHED THEN
UPDATE SET seq_column = s.seq
WHERE some_column = some_condition
DECLARE
CURSOR cur_partitions IS
SELECT DISTINCT col1, col2
FROM table1
WHERE some_column = some_condition;
v_seq NUMBER;
BEGIN
FOR r_partition IN cur_partition LOOP
v_seq := your_sequence.NEXTVAL;
UPDATE table1
SET seq_column = v_seq
WHERE col1 = r_partition.col1
AND col2 = r_partition.col2
AND some_column = some_condition;
END LOOP;
END;