use*_*730 2 sql postgresql pivot
可能重复:
转置sql结果,以便一列转到多列
我想在我的PSQL数据库中进行一种行/列交换.这是我的示例数据库:
id place price year
1 U.S. 80 2000
2 U.S. 60 2001
3 U.S. 40 2002
4 U.K. 600 2000
5 U.K. 500 2001
6 U.K. 350 2002
Run Code Online (Sandbox Code Playgroud)
我想将该表转换为以下示例:
year U.S. U.K.
2000 80 600
2001 60 500
2002 40 350
Run Code Online (Sandbox Code Playgroud)
这在PostgreSQL中是否可行?
您可以使用聚合函数和CASE语句轻松完成此操作:
select year,
sum(case when place = 'U.S.' then price else 0 end) "U.S.",
sum(case when place = 'U.K.' then price else 0 end) "U.K."
from yourtable
group by year
Run Code Online (Sandbox Code Playgroud)