我为参加马拉松比赛的人准备了下表
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
我需要创建一个表来显示一个人是否在每个月初运行
- 2014 年 7 月 1 日有 3 个人参加了马拉松比赛:mike、 史蒂夫·斯坦
- 2014 年 8 月 1 日有 5 个人:nike、mini、stan、 皮特,塔拉
- 2014 年 9 月 1 日有 2 个人:mini、tara
- 等等。 。
所需的表格应如下所示
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
现在,为了做到这一点,我每个月运行一个单独的查询。 这非常乏味我怀疑我应该使用递归
,但我不知道如何在这里实现它。
PS:我拥有具有所有功能的 Teradata 14,但我无法编写自己的 udf
和 过程
。如何使用 Teradata sql 获取最终表?
最佳答案
不需要递归或过程,这是使用一些专有的 Teradata SQL 扩展完成的:
SELECT person, BEGIN(pd)
FROM vt
EXPAND ON PERIOD(start, end) AS pd BY ANCHOR MONTH_BEGIN
关于teradata - 如何在 Teradata 中对日期使用递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333746/