有人可以帮助这项任务吗?如果我在 Teradata 中有一张如下表:
案例ID | 内容 | 重复 |
---|---|---|
id1 | 第 1 行 | 2 |
id2 | 第 2 行 | 3 |
我想根据以下重复值构建一个新表。我应该怎么做?
案例ID | 内容 | 重复 | 群号 |
---|---|---|---|
id1 | 第 1 行 | 2 | 1 |
id1 | 第 1 行 | 2 | 2 |
id2 | 第 2 行 | 3 | 1 |
id2 | 第 2 行 | 3 | 2 |
id2 | 第 2 行 | 3 | 3 |
谢谢!
有人可以帮助这项任务吗?如果我在 Teradata 中有一张如下表:
案例ID | 内容 | 重复 |
---|---|---|
id1 | 第 1 行 | 2 |
id2 | 第 2 行 | 3 |
我想根据以下重复值构建一个新表。我应该怎么做?
案例ID | 内容 | 重复 | 群号 |
---|---|---|---|
id1 | 第 1 行 | 2 | 1 |
id1 | 第 1 行 | 2 | 2 |
id2 | 第 2 行 | 3 | 1 |
id2 | 第 2 行 | 3 | 2 |
id2 | 第 2 行 | 3 | 3 |
谢谢!
Teradata 专有的 EXPAND ON 语法创建时间序列并可用于此任务:
SELECT t.*
-- convert period back to int
,End(pd) - Current_Date AS groupid
FROM mytable AS t
-- works on date/time only -> convert int to period
EXPAND ON PERIOD(Current_Date, Current_Date + repeat) AS pd
你可以使用递归 cte 来做到这一点:
with recursive cte as ( select * , 1 groupid from cases union all select caseid ,content, repeat, groupid + 1 groupid from cte where groupid < repeat ) select * from cte order by caseid
酪蛋白 | 内容 | 重复 | 群号 -----: | :-------- | -----: | ------: 1 | 第 1 行 | 2 | 1 1 | 第 1 行 | 2 | 2 2 | 第 2 行 | 3 | 1 2 | 第 2 行 | 3 | 2 2 | 第 2 行 | 3 | 3
db<>在这里摆弄