转动与亚马逊红移表

问题描述 投票:2回答:1

我在亚马逊红移几个表后面几维列的图案和一对指标名称/值列。

DimensionA  DimensionB  MetricName  MetricValue
----------  ----------  ----------  -----------
dimA1       dimB1       m1          v11
dimA1       dimB2       m1          v12
dimA1       dimB2       m2          v21
dimA2       dimB2       m1          v13
dimA3       dimB1       m2          v22        

我正在寻找放松/数据转动成每每一个独特的维度集,e.g一行形式的好方法:

DimensionA  DimensionB  m1   m2 
----------  ----------  ---  ---
dimA1       dimB1       v11
dimA1       dimB2       v12  v21
dimA2       dimB2       v13
dimA3       dimB1            v22        

什么是用于生成将执行此平仓查询的良好格局?

亚马逊红移是基于ParAccel和支持的PostgreSQL 8.0.2,它没有crosstabunnestpivotunpivot

sql pivot amazon-redshift paraccel
1个回答
6
投票

你可以创建每MetricName一个CASE语句,但你必须使用聚合以及使GROUP BY工作。

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
;

值得注意的是,红移对象名称从不区分大小写,但栏目内容总是有效的,这是SQL Server的默认值是相反的。

© www.soinside.com 2019 - 2024. All rights reserved.