Sql 从非结构化表创建序列
考虑到有90000多条记录,如何根据创建的\u DTSql 从非结构化表创建序列,sql,database,oracle,group-by,Sql,Database,Oracle,Group By,考虑到有90000多条记录,如何根据创建的\u DT
NUMBERID | MODEL| NAME | VALUE | CREATED_DT | LOADED_DT
1000 | BOE | AGT | 300 | 02-AUG-2016| 02-AUG-2016
1001 | AIR | ACT | 400 | 01-AUG-2016| 01-AUG-2016
1000 | EMB | ADT | 500 | 02-AUG-2016| 01-AUG-2016
1004 | REL | GTR | 140 | 01-AUG-2016| 01-AUG-2016
1001 | SIM | HJT | 140 | 01-JUL-2016| 28-JUL-2016
1002 | SIM | ACT | 540 | 04-JUL-2016| 04-JUL-2016
我不能使用MAX(NUMBER\u ID)
MIN(NUMBER\u ID)
和CREATED\u DT
之间的差异,因为某些数据丢失的风险很高。我可以使用OracleROWID
column(系统列)列拆分记录而不丢失任何记录吗
谢谢你的帮助 分析函数可以帮助对行进行唯一排序和分块
示例模式
drop table test1;
create table test1(numberid number, created_dt date);
insert into test1
select level, sysdate - level * interval '1' second
from dual connect by level <= 100000;
分析函数可以帮助对行进行唯一排序和分块
示例模式
drop table test1;
create table test1(numberid number, created_dt date);
insert into test1
select level, sysdate - level * interval '1' second
from dual connect by level <= 100000;
@jonheller1您能告诉我为什么要在“trunc((row_number()over(order by created_dt desc)-1)/500)+1 batch_id”中使用“-1”?@Cool_Oracle这是为了处理一个错误。但CEIL更简单一些,所以我改变了我的答案。@jonheller1你能告诉我为什么在“trunc”((row_number()over(order by created_dt desc)-1)/500)+1 batch_id”中使用“-1”?@Cool_Oracle它是以一个错误处理的。但CEIL更简单,所以我对答案做了一点修改。