Как преобразовать строки в столбец в SQL

#sql #vertica

Вопрос:

У меня есть следующая таблица

введите описание изображения здесь

EURtoUSD в столбце всегда отображается одно и то же значение для всех дат в разных группах car .

Как я могу создать следующую таблицу?

введите описание изображения здесь

Ответ №1:

Использование условной агрегации:

 select date, eurtousd,
       max(case when car = 'Audi' then priceeur end) as audi,
       max(case when car = 'BMW' then priceeur end) as bmw,
       max(case when car = 'MB' then priceeur end) as mb
from t
group by date, eurtousd;
 

Комментарии:

1. Спасибо. Не могли бы вы также помочь, если, например, я хочу снова создать длинную таблицу (1-я таблица) из широкой таблицы (2-я таблица), что мне следует использовать тогда?

2. @ПрийтМетс . . . Ты можешь использовать union all .

3. Это сделает запрос слишком длинным (в реальном случае автомобилей больше). Есть ли что-то похожее на функцию UNPIVOT (Oracle)?

4. Я боюсь, что у Vertica нет функции поворота или отключения .. Мой обычный обходной путь-использовать SQL , генерирующий SQL, чтобы, да, создать инструкцию SQL, которая выполняет поворот.