如何在Vertica中创建交叉表

时间:2010-03-15 19:16:30

标签: pivot pivot-table crosstab vertica

在PostgreSQL和其他RDBMS中找到的crosstabpivot table的Vertica等价物是什么?

2 个答案:

答案 0 :(得分:1)

Vertica目前没有(版本3.5.9供将来参考)具有该功能。我和一位同事谈过,他的建议是玩“交叉加入”。

另一种选择是尽可能地提取结果,然后在数据库之外运行一个进程(perl,Java,C#等)来处理数据。

然而,Vertica对功能请求持开放态度。

我不相信即将发布的4.0版本中也可以使用。

答案 1 :(得分:0)

Vertica可以使用基本的sql-92语法执行交叉表:

select 
   DIM1
   ,DIM2
   ,DIM3
   ,SUM(MEASURE1)
   ,SUM(MEASURE2)
   ,SUM(MEASURE3)
from  
 (select 
   DIM1
   ,DIM2
   ,DIM3
   ,MAX(CASE WHEN MEASURE = 'MEASURE1' then MEASURE1_VALUE else null end) MEASURE1
   ,MAX(CASE WHEN MEASURE = 'MEASURE2' then MEASURE2_VALUE else null end) MEASURE2
   ,MAX(CASE WHEN MEASURE = 'MEASURE3' then MEASURE3_VALUE else null end) MEASURE3
from SOME_TABLE
group by DIM1, DIM2, DIM3
) as a
group by DIM1, DIM2, DIM3