我有一份降雨数据列表
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 -
感谢。
答案 0 :(得分:4)
SELECT * FROM Rainfall
pivot (max(AMT) for year in (2000, 2001, 2002, 2003))
order by 1
答案 1 :(得分:3)
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)