在PostgreSQL和其他RDBMS中找到的crosstab
或pivot table
的Vertica等价物是什么?
答案 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