Sql 使用查询创建新列

Sql 使用查询创建新列,sql,postgresql,Sql,Postgresql,我有一个满表的日期,日期是唯一的,但对于每个日期,我想有数字1-3。所以现在所有的日期都是不同的,但我的目标是有一个新的列,每个日期有3行,而不是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 这可以通过查询实现吗 交叉连接与生成_系列 select d

我有一个满表的日期,日期是唯一的,但对于每个日期,我想有数字1-3。所以现在所有的日期都是不同的,但我的目标是有一个新的列,每个日期有3行,而不是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

这可以通过查询实现吗

交叉连接
生成_系列

select d.dt,n.num
from dates_tbl d
cross join generate_series(1,3) n(num)

你可以通过多种方式来实现这一点

这里有一个:

首先修改表格以添加额外的数字字段。 然后创建一个表,并将值1、2、3作为三个不同的行插入表中。如果您只想一次性执行此操作,可以将其作为临时表执行:

CREATE TEMPORARY TABLE temp_location
(
   number int
) 
ON COMMIT DROP;

将带有数字表和日期的
交叉联接的结果插入到新字段的表中。

效果非常好!谢谢,我不知道generate_series函数。