Количество уникальных столбцов на основе другой строки - PullRequest
0 голосов
/ 27 сентября 2018

Если у вас есть следующая таблица:

ID, item
1, A
2, A
1, A
1, B
3, C

Я бы хотел получить эти результаты

ID, A, B, C
1, 2, 1, 0
2, 1, 0, 0
3, 0, 0, 1

Должен быть столбец для каждого типа элемента.В идеальном мире мне не нужно было бы заблаговременно получать эти типы элементов.

Есть ли способ сделать это с помощью SQL-запроса?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы описываете функцию поворота.Redshift в настоящее время не поддерживает их.

Если вы передаете результаты SQL чему-либо другому (например, python , или excel , или Chartio ) Есть простые последующие шаги для поворота.Но в Redshift вы должны вручную выполнить функцию суммирования, упомянутую выше.

0 голосов
/ 27 сентября 2018

Вы можете использовать условное агрегирование с помощью функции sum () :

select ID,
       sum(case when item = 'A' then 1 else 0 end ) as a,
       sum(case when item = 'B' then 1 else 0 end ) as b,
       sum(case when item = 'C' then 1 else 0 end ) as c
  from items
group by ID

Rextester Demo

...