使用查询创建新列

时间:2018-02-06 01:35:52

标签: sql postgresql

我有一个充满日期的表,日期是唯一的,但是对于每个日期我想要数字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

这可以通过查询实现吗?

2 个答案:

答案 0 :(得分:3)

cross joingenerate_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的结果与数字表和日期一起插入您的表格。