如何在Teradata中使用递归日期?

Bur*_*ras 2 teradata

对于参加马拉松比赛的人,我有下表

person  start       end
mike    2-Jun-14    2-Jul-14
nike    3-Jul-14    9-Aug-14
mini    1-Aug-14    3-Sep-14
sara    25-Jun-14   27-Jun-14
steve   12-Jun-14   3-Jul-14
stan    2-Jun-14    2-Aug-14
pete    3-Jul-14    9-Aug-14
tara    5-Jul-14    5-Sep-14
Run Code Online (Sandbox Code Playgroud)

我需要创建一个表格,显示一个人是否在每个月初开始运行

  • 2014年7月1日,有3人参加马拉松赛:迈克,史蒂夫,斯坦
  • 2014年8月1日,有5人:耐克,迷你,斯坦,皮特,塔拉
  • 2014年9月1日,有2人:迷你塔拉
  • 等等..

所需的表应如下所示

person  running on
mike    1-Jul-14
nike    1-Aug-14
mini    1-Aug-14
mini    1-Sep-14
steve   1-Jul-14
stan    1-Jul-14
stan    1-Aug-14
pete    1-Aug-14
tara    1-Aug-14
tara    1-Sep-14
Run Code Online (Sandbox Code Playgroud)

现在,要做到这一点,我每个月都会运行一个单独的查询.这是非常乏味的 我怀疑我应该使用recursive,但我不知道如何在这里实现它.

PS:我有Teradata 14的所有功能,除了我不能写自己udf的和procedures.如何使用Teradata sql获得最终表格?

dno*_*eth 5

不需要递归或过程,这是使用一些专有的Teradata SQL扩展完成的:

SELECT person, BEGIN(pd)
FROM vt
EXPAND ON PERIOD(start, end) AS pd BY ANCHOR MONTH_BEGIN
Run Code Online (Sandbox Code Playgroud)