Должен ли я использовать PIVOT или что-то еще - PullRequest
0 голосов
/ 29 марта 2019

У меня есть SQL-код, использующий много операторов CTE для обработки данных, что в итоге приводит меня к чему-то вроде

Bldgcode     Business        Seat_Count     Area  
A012345      Bus 1            1             1234  
A012345      Bus 2            3             3456  
B1234        Bus 1            4             6789  
B1234        Bus 3            6             4321  

Я хочу переставить / развернуть это, чтобы показать окончательный набор результатов, который выглядит следующим образом

Bldgcode    Bus 1 Seat    Bus 1 Area    Bus 2 Seat    Bus 2 Area   Bus 3 Seat  Bus 3 Area  
A012345     1              1234           3             3456        0          0
B1234       4              6789           0              0          6          4321

Мне бы хотелось, чтобы столбцы Business были динамичными, поскольку у меня их более 15, и я не хочу перечислять каждый из них по отдельности, плюс может быть, когда в данных появится новый Business, который янужен еще один набор столбцов для.

Я смотрел на PIVOT, но не могу заставить его работать, так как мои знания ограничены, любая помощь с кодированием будет высоко ценится

Спасибо

1 Ответ

2 голосов
/ 30 марта 2019

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

select Bldgcode,
       max(case when Business = 'Bus 1' then Seat_Count end) as bus1_seats,
       max(case when Business = 'Bus 1' then area end) as bus1_area,
       max(case when Business = 'Bus 2' then Seat_Count end) as bus2_seats,
       max(case when Business = 'Bus 2' then area end) as bus2_area
from t
group by Bldgcode;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...