我有一个如下所示的输入数据集:
header1,null,null,null
null,1,X,Y,Z
null,2,X,Y,Z
null,3,X,Y,Z
header2,null,null,null
null,4,X,Y,Z
null,5,X,Y,Z
null,6,X,Y,Z
我想针对该输入编写一个查询,以返回如下所示的结果集:
header1,1,X,Y,Z
header1,2,X,Y,Z
header1,3,X,Y,Z
header2,4,X,Y,Z
header2,5,X,Y,Z
header2,6,X,Y,Z
我在 Oracle 11g R2 上。我一直在查看此处的 Oracle 分析介绍: http ://www.oracle-base.com/articles/misc/analytic-functions.php
我在想有一个解决方案,但我还没有找到。我认为的问题是我没有什么可以真正分组的。我唯一的“指标”是重复标头值直到我遇到一组空值,然后抓取下一个标头并重复它直到我遇到一些空值。所以顺序很重要,但是您可以看到我们没有要排序的列。
下面是一些用于构建测试表和插入行的快速脚本。
谢谢。
create table test (
col01 varchar2(10),
col02 varchar2(10),
col03 varchar2(10),
col04 varchar2(10))
insert into test values ('header1',null,null,null);
insert into test values (1,'X','Y','Z');
insert into test values (2,'X','Y','Z');
insert into test values (3,'X','Y','Z');
insert into test values ('header2',null,null,null);
insert into test values (4,'X','Y','Z');
insert into test values (5,'X','Y','Z');
insert into test values (6,'X','Y','Z');