繁体   English   中英

遍历名称几乎相同的列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM