根据 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...
假设我有以下 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...