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

Create column based on values on another column in redshift

假设我有以下 table:

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

我想根据 id 列的映射创建另一个列,例如:

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

所以我基本上想要一个查询来根据该地图创建一个列,我的最终 table 将是:

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

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

这可能吗?

(基本上就是pandas.map)

您似乎希望"fix"一些已经在您的 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