将具有设置值的列添加到表中,为每一行扩展表

问题描述

我正在尝试在Redshift中向表添加一列,该列向所有行添加多个值,但是没有关系,除了所有行都应受到影响。

我不确定如何描述这一点,因此Google-ing表现得很艰难!

视觉示例:

+----+-------+
| ID | Name  |
+----+-------+
|  1 | James |
|  2 | Jane  |
+----+-------+

应该成为

+----+-------+-----+
| ID | Name  | Sec |
+----+-------+-----+
|  1 | James | SG1 |
|  1 | James | SG2 |
|  1 | James | SG3 |
|  2 | Jane  | SG1 |
|  2 | Jane  | SG2 |
|  2 | Jane  | SG3 |
+----+-------+-----+

基本上将“ SG1,SG2和SG3”添加到每一行。

谢谢

解决方法

您可以cross join包含三个值的派生表:

select t.id,t.name,s.sec
from mytable t
cross join (select 'SG1' sec union all select 'SG2' union all select 'SG3') s

我不确定Redshift是否支持values(),这将有助于缩短语法:

select t.id,s.sec
from mytable t
cross join (values ('SG1'),('SG2'),('SG3')) s(sec)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...