我有一张桌子,我必须从中提取一些数据。
列中的列相同,但除了一件事,名称的最后一个,即一个数字。我解释一下:
我这样做了几次startDate和endDate:
startDate1 | endDate1 |startDate2 | endDate2 |startDate3 | endDate3
等...
而且,我想逐个提取数据 首先是startDate1和endDate1,然后是startDate2和endDate2 ......
所以我做了这样的事情:
FOR i IN 1..10 LOOP
IF reg.startDate ||i is not null THEN
--TODO
END IF;
END LOOP;
Reg is是光标上的一行。
当然,这不起作用,因为我们不能像这样连接(我忽略了一个语句)。
如果是循环,我想要的是什么,就像我这样做:
IF reg.startDate1 is not null THEN
--TODO
END IF;
IF reg.startDate2 is not null THEN
--TODO
END IF;
IF reg.startDate3 is not null THEN
--TODO
END IF;
所以,比如:
FOR i IN 1..10 LOOP
IF reg.startDate||i is not null THEN
--TODO
END IF;
END LOOP;
所以我在不同的列中得到了这些数据:
startDate1 | endDate1 |startDate2 | endDate2 |startDate3 | endDate3
18/07/2013 | 19/07/2013 | 18/08/2013 | 19/08/2013 | 18/09/2013 | 19/09/2013
我想要的是这样的:
FOR i IN 1..10 LOOP
IF reg.startDate ||i is not null THEN
insert into table (date) values (reg.endDate |i);
END IF;
END LOOP;
听到,我将插入19/07 / 2013,19 / 08 / 2013,19 / 09/2013。
我真的不知道那里有什么不清楚。
这可以用或不连接吗?
问题标题可能有误,但我不知道如何以其他方式在一个标题中提出问题。
答案 0 :(得分:0)
使用union
Select startDate1, endDate1 FROM YOURTable
UNION
Select startDate2, endDate2 FROM YOURTable
UNION
Select startDate3, endDate3 FROM YOURTable
...;