1

3 つの列を持つ SQL クエリがあります。最初は年 (カテゴリ)、2 番目はサイト (カテゴリ)、最後は温度 (フロート) です。X 年サイトの一意の組み合わせとしての行。例えば:

現在のクエリ結果

Year, Site, Temp
1,    1,  x11
1,    2,  x12
1,    3,  x13
2,    1,  x21
2,    2,  x22
2,    3,  x23
3,    1,  x31
3,    2,  x32
3,    3,  x33

年を行として保持しながら、各サイトを異なる列として表示したいと思います。例えば:

目的のクエリ結果

Year, TSite1, TSite2, TSite3
 1,    x11,    x12,    x13
 2,    x21,    x22,    x23
 3,    x31,    x23,    x33

この形式で結果が得られるクエリを実行する方法についてのアイデアはありますか? 一時テーブルまたはビューを使用して情報を保存してもかまいません。

前もって感謝します。

4

2 に答える 2

1
SELECT Year,MIN(CASE WHEN Site=1 THEN Temp ELSE 0 END) as Tsite1,
        MIN(CASE WHEN Site=2 THEN Temp  ELSE 0 END) as Tsite2,
        MIN(CASE WHEN Site=3 THEN Temp  ELSE 0 END) as Tsite3 FROM table GROUP BY Year
于 2013-10-29T22:33:46.050 に答える
0

ピボット クエリは 1 つのアプローチです (コメントで述べたように) サイトのカンマ区切りのリストが必要な場合は、group_concat().

select year, group_concat(temp separator ', ' order by site) as temps
from t
group by year;

これはまさにあなたが望むものではないかもしれません-tempたとえば、型情報を文字列に変換すると、型情報が失われます。ただし、一時データを表示したり、別のツールにエクスポートしたりするだけの場合は、これが必要になる場合があります。

于 2013-10-29T22:34:47.287 に答える