首页 > 解决方案 > SQL如何将列转换为变量

问题描述

假设我有一张看起来像这样的桌子

Type   Day       Volume
"C1"   Tuesday     10
"C1"   Monday      10
"C2"   Tuesday     10
"C2"   Monday      10

将其转换为看起来像这样的表格的最有效方法是什么?

Day      C1  C2
Tuesday  10  10
Monday   10  10

理想情况下,我只需使用 group by 就可以在没有任何 PIVOT 功能的情况下做到这一点。

感谢您的时间和帮助。如果您需要更多信息,请告诉我。

标签: sqlpostgresqlgroup-by

解决方案


您可以使用条件聚合来做到这一点:

select day, 
       max(volume) filter (where type = 'C1') as c1,
       max(volume) filter (where type = 'C2') as c2
from the_table
group by day;

推荐阅读