我在亚马逊红移几个表后面几维列的图案和一对指标名称/值列。
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,它没有crosstab
,unnest
,pivot
或unpivot
。
你可以创建每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的默认值是相反的。