我应该使用PIVOT还是其他

时间:2019-03-29 15:29:52

标签: sql sql-server tsql

我有使用许多CTE语句的SQL代码来汇总数据,最终使我陷入类似这样的情况

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

我希望“业务”列是动态的,因为我有15多个,并且不想单独列出每个列,此外,有时候新数据会出现在数据中,因此我需要另一组列。

我看过PIVOT,但由于我的知识有限,无法使它正常工作,对编码的任何帮助将不胜感激

谢谢

1 个答案:

答案 0 :(得分:1)

只需使用条件聚合:

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;