sql – 用于redshift数据库的数据透视表

前端之家收集整理的这篇文章主要介绍了sql – 用于redshift数据库的数据透视表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道之前已经问过这个问题但是任何答案都无法帮助我达到我想要的要求.所以在新线程中提出问题 @H_301_2@在redshift中,如何使用每个唯一维度集将数据转换为一行的形式,例如:

id         Name               Category         count
8660     Iced Chocolate         Coffees         105
8660     Iced Chocolate         Milkshakes      10
8662     Old Monk               Beer            29
8663     Burger                 Snacks          18
@H_301_2@至

id        Name              Cofees  Milkshakes  Beer  Snacks
8660    Iced Chocolate       105       10        0      0
8662    Old Monk             0         0        29      0
8663    Burger               0         0         0      18
@H_301_2@上面列出的类别会不断变化.
Redshift不支持pivot运算符,case表达式没有多大帮助(如果没有请建议怎么做)

@H_301_2@如何在红移中实现此结果?

@H_301_2@(上面只是一个例子,我们将有1000个类别,这些类别一直在变化)

解决方法

我不认为在Redshift中有一种简单的方法可以做到这一点,@H_301_2@你还说你有超过1000个类别,而且这个数字还在增长
您需要考虑到每张桌子有1600列的限制,

@H_301_2@见附件链接
[http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_usage.html][1]

@H_301_2@您可以使用案例,但是您需要为每个类别创建案例

select id,name,sum(case when Category='Coffees' then count) as Cofees,sum(case when Category='Milkshakes' then count) as Milkshakes,sum(case when Category='Beer' then count) as Beer,sum(case when Category='Snacks' then count) as Snacks
from my_table
group by 1,2
@H_301_2@你有的其他选择是将表上传到例如R,然后你可以使用cast函数.

cast(data,name~ category)
@H_301_2@然后将数据上传回S3或Redshift

猜你在找的MsSQL相关文章