首页 > 解决方案 > 我怎样才能最好地旋转我的红移表?

问题描述

我有一个用以metadata下列调用的 Redshift 表:

ID 钥匙 价值
1001 代码1 我的价值
1001 代码2 其他
1001 代码3 完后还有
1002 代码1 新的一个
1002 代码2 这里
1002 代码3 最后的
1003 代码1 你好
1003 代码2 再见
1004 代码2 现在
1004 代码3 然后

我想要一个查询,将其返回为:

ID 代码1 代码2 代码3
1001 我的价值 其他 完后还有
1002 新的一个 这里 最后的
1003 你好 再见
1004 现在 然后

请注意,并非所有 ID 都具有全部 3 个代码。有些人会有 1 或 2 个,其他人全部 3 个,还有一些人仍然没有。

标签: sqlamazon-web-servicesamazon-redshift

解决方案


您可以使用条件聚合。假设您知道结果集中需要的列,您可以使用:

select id,
       max(case when key = 'code1' then value end) as code1,
       max(case when key = 'code2' then value end) as code2,
       max(case when key = 'code3' then value end) as code3
from t
group by id;

如果您不知道具体的值并需要从数据中读取它们。. . 这更棘手。据我所知,Redshift 不支持动态 SQL。因此,您需要在数据库中查询不同的key值,并使用您喜欢的语言将查询构造为字符串。然后,您可以执行该查询。


推荐阅读