[英]Loop through columns, with almost identical names
我有一张桌子,必须从那里提取一些数据。
有些列是相同的,但是除了一件事之外,名称的最后一个即数字。 我解释 :
我以这种方式多次获得了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是光标上的一行。
当然,这是行不通的,因为我们不能这样连接(我忽略了一条语句)。
我想要的是一个循环,就像我这样做是一样的:
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。
我真的不知道那里还不清楚。
是否可以通过串联或不串联进行?
问题标题可能有误,但我不知道如何以另一种方式提出问题。
使用联盟
Select startDate1, endDate1 FROM YOURTable
UNION
Select startDate2, endDate2 FROM YOURTable
UNION
Select startDate3, endDate3 FROM YOURTable
...;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.