Sql 使用查询创建新列
我有一个满表的日期,日期是唯一的,但对于每个日期,我想有数字1-3。所以现在所有的日期都是不同的,但我的目标是有一个新的列,每个日期有3行,而不是1-3行 现在我的桌子看起来像这样: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
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函数。