如何在PostgreSQL中转置列和行(即,如何切换行和列)?

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中是否可行?

Tar*_*ryn 8

您可以使用聚合函数和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)

请参阅SQL Fiddle with Demo