根据redshift中另一列的值创建列

时间:2020-05-28 18:38:13

标签: sql amazon-web-services amazon-redshift dml

假设我有下表:

|---------------------|
|          id         |
|---------------------|
|          12         |
|---------------------|
|         390         |
|---------------------|
|          13         |
|---------------------|

我想基于id列的映射创建另一列,例如:

12 -> qwert
13 -> asd
390 -> iop

所以我基本上希望查询基于该映射创建一个列,我的最终表将是:

|---------------------|---------------------|
|          id         |          col        |
|---------------------|---------------------|
|          12         |          qwert      |
|---------------------|---------------------|
|         390         |          iop        |
|---------------------|---------------------|
|          13         |          asd        |
|---------------------|---------------------|

我在python字典中有这张地图。

这可能吗?

(基本上是pandas.map

1 个答案:

答案 0 :(得分:1)

您似乎希望“修复” PostgreSQL数据库中已有的某些数据。

您可以使用此技术包括数据:

WITH foo AS (VALUES (12, 'qwert'), (13, 'asd'), (390, 'iop'))
SELECT table.id, foo.column2
FROM table
JOIN foo ON (foo.column1 = table.id)

您可以将其作为UPDATE语句来执行,但这会很棘手。编写具有所需内容的SELECT语句,然后使用CREATE TABLE new_table AS SELECT...

请参阅:CREATE TABLE AS - Amazon Redshift

相关问题