0

降雨データのリストがあります

SELECT * FROM Rainfall

COUNTRY         YEAR  AMT
--------------  ----  ---
Austria         2000  1.1
Belgium         2000  1.2
France          2000  1.3
Ireland         2000  1.4

France          2001  1.5
Ireland         2001  1.6

Austria         2002  1.7
Belgium         2002  1.8
France          2002  1.9

Germany         2003  2.0
Italy           2003  2.1

2年連続ですべての国を表示するこれを選択するにはどうすればよいですか

COUNTRY          YEAR 2001   YEAR 2000
-------          ---------   ---------
Austria           -            1.1
Belgium           -            1.2
France            1.5          1.3
Ireland           1.6          1.4

その後2002年~2001年

COUNTRY          YEAR 2002   YEAR 2001
-------          ---------   ---------
Austria           1.7          -
Belgium           1.8          -
France            1.9          1.5
Ireland           -            1.6

最後に 2003 年 - 2002 年

COUNTRY          YEAR 2003   YEAR 2002
-------          ---------   ---------
Austria           -           1.7          
Belgium           -           1.8          
France            -           1.9          
Germany           2.0         -
Italy             2.1         -

ありがとう。

4

2 に答える 2

4
SELECT * FROM Rainfall
pivot (max(AMT) for year in (2000, 2001, 2002, 2003))
order by 1

フィドル

于 2013-04-10T13:02:25.423 に答える
3

2000/2001 の場合:

http://www.sqlfiddle.com/#!4/a2907/13 (Egor が指摘したように国の重複を修正)

select 
   country, 
   max(case when year=2001 then to_char(amt) else '-' end) as 'YEAR 2001',
   max(case when year=2000 then to_char(amt) else '-' end) as 'YEAR 2000'
from 
  Rainfall
where year in (2000, 2001)
group by country
order by country;

一般的なクエリが必要な場合は、これで実行できますが、列名はありません。

with (select 2000 as ref_year from dual) as s
select 
   country, 
   max(case when year=s.ref_year+1 then to_char(amt) else '-' end) as 'Next YEAR',
   max(case when year=s.ref_year   then to_char(amt) else '-' end) as 'YEAR'
from 
  Rainfall
where year in (s.ref_year, s.ref_year + 1)
group by country
order by country;

(サブセレクトで ref_year を変更するだけです)

于 2013-04-10T12:59:46.870 に答える