首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Amazon RedShift透视表

使用Amazon RedShift透视表
EN

Stack Overflow用户
提问于 2013-12-18 14:16:09
回答 1查看 11.7K关注 0票数 4

我在亚马逊RedShift中有几个表,它们遵循几个维度列和一对指标名称/值列的模式。

代码语言:javascript
复制
DimensionA  DimensionB  MetricName  MetricValue
----------  ----------  ----------  -----------
dimA1       dimB1       m1          v11
dimA1       dimB2       m1          v12
dimA1       dimB2       m2          v21
dimA2       dimB2       m1          v13
dimA3       dimB1       m2          v22        

我正在寻找一种很好的方法来将数据展开/透视为每个唯一维度集一行的形式,例如:

代码语言:javascript
复制
DimensionA  DimensionB  m1   m2 
----------  ----------  ---  ---
dimA1       dimB1       v11
dimA1       dimB2       v12  v21
dimA2       dimB2       v13
dimA3       dimB1            v22        

什么是生成执行解开操作的查询的好模式?

亚马逊RedShift基于ParAccel,支持没有crosstabunnestpivotunpivot的PostgreSQL 8.0.2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 00:14:21

您可以只为每个MetricName创建一条CASE语句,但您还必须使用聚合来使GROUP BY工作。

代码语言:javascript
复制
SELECT dimension_a
      ,dimension_b
      ,MAX(CASE WHEN metric_name = 'm1' THEN metric_value ELSE NULL END) m1
      ,MAX(CASE WHEN metric_name = 'm2' THEN metric_value ELSE NULL END) m2
  FROM my_table
 GROUP BY dimension_a
         ,dimension_b
;

值得注意的是,Redshift对象名称从不区分大小写,但列内容始终区分大小写,这与SQL Server默认值相反。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20650918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档