Как мне сделать кросс-таблицу в Vertica - PullRequest
0 голосов
/ 15 марта 2010

Что такое Vertica эквивалент crosstab или pivot table, найденный в PostgreSQL и других СУБД?

Ответы [ 2 ]

1 голос
/ 26 марта 2010

В настоящее время Vertica (выпуск 3.5.9 для дальнейшего использования) не имеет такой возможности. Я поговорил с коллегой, и он предложил поиграть с «взаимным соединением».

Другим вариантом будет отфильтровать ваши результаты настолько, насколько это возможно, а затем запустить процесс вне базы данных (perl, Java, C # и т. Д.), Который манипулирует данными.

Однако Vertica открыта для запросов функций.

Не думаю, что это будет доступно и в следующем выпуске 4.0.

0 голосов
/ 19 октября 2010

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
...