我有一个充满日期的表,日期是唯一的,但是对于每个日期我想要数字1-3。因此,现在所有的日期都是截然不同的,但我的目标是建立一个新列,其中每个日期有3行而不是1行,数字为1-3。
现在我的桌子看起来像这样:
Date
1/1/2016
2/1/2016
我想要的是:
Date | Number
1/1/2016 | 1
1/1/2016 | 2
1/1/2016 | 3
2/1/2016 | 1
2/1/2016 | 2
2/1/2016 | 3
这可以通过查询实现吗?
答案 0 :(得分:3)
cross join
与generate_series
。
select d.dt,n.num
from dates_tbl d
cross join generate_series(1,3) n(num)
答案 1 :(得分:0)
你可以通过多种方式实现这一目标。
这是一个:
首先修改表以添加附加数字字段。 然后创建一个表并将值1,2,3作为三个不同的行插入表中。如果您只想以一次性方式执行此操作,则可以将其作为临时表执行此操作:
CREATE TEMPORARY TABLE temp_location
(
number int
)
ON COMMIT DROP;
使用新字段将CROSS JOIN
的结果与数字表和日期一起插入您的表格。