为一系列日期运行`SELECT`以填充表格

时间:2017-10-30 19:44:40

标签: sql for-loop select stored-procedures sybase-ase

我有一个(有点精心设计的)SELECT语句,它根据特定的时间戳,从表中提取特定日期的行子集。天真,像

SELECT id, runTime
  FROM ...
...
 WHERE runTime < @MyTime

其中@MyTime是某个日期时间参数。我需要在很长的连续日期(从6月1日到今年11月1日)运行SELECT,将结果存储在已创建的MyOutTable中,并使用字段idrunTimecontrolDate,其中controlDate是用于从我的表格中检索ID和runTime的日期值。

在SQL中有一个简短的方法可以避免使用Python吗?假设有一些存储过程,它接受开始和结束日期参数并生成所需数据,填充输出表?

非常感谢

2 个答案:

答案 0 :(得分:1)

INSERT INTO MyOutTable ( ControlDate, id, runTime )
SELECT '2017-10-30' as ControlDate, id, runTime
FROM ...
...
WHERE runTime < @MyTime

请注意,没有VALUES个关键字,ControlDate值是常量字面值,但您也可以使用CURDATE()或类似关键字。

答案 1 :(得分:0)

您可以使用带有日期/时间的子查询并使用join逻辑:

select d.dte, . . .
from (select cast('2017-06-01' as datetime) as dte union all
      select cast('2017-06-02' as datetime) as dte union all
      . . .
     ) d join
     . . .
     on runTime < d.dte;