2

重複の可能性:
1つの列が複数の列に移動するように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

そのテーブルを次の例に変換したいと思います。

year    U.S.    U.K.
2000    80  600
2001    60  500
2002    40  350

これはPostgreSQLで可能ですか?

4

2 に答える 2

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

SQL FiddlewithDemoを参照してください

于 2012-10-29T19:06:28.157 に答える
0

これは「ピボット」と呼ばれ、postgresにはそれをサポートするための特別な構文はありません。たとえば、SQLを使用してコーディングする必要があります。

select
    year,
    us.price as us,
    uk.price as uk
from mytable us
left join mytable uk on us.year = uk.year
于 2012-10-29T19:06:41.300 に答える