有一道数据库的题大概意思如下:
一张表 A
Year season
2014 spring
2014 summer
2014 automn
2014 winter
2013 spring
2013 summer
2013 automn
2013 winter
输出格式为
年 季节1 季节2 季节3 季节4
2014 spring summer automn winter
2013 spring summer automn winter
------解决思路----------------------
典型的行转列
使用max(decode())实现,11g之后可以使用行转列专用函数pivot实现
------解决思路----------------------
select year,
max(decode(rn,1,season)) 季节1,
max(decode(rn,2,season)) 季节2,
max(decode(rn,3,season)) 季节3,
max(decode(rn,4,season)) 季节4
from(
select year,season,
row_number()over(partition by year order by decode(season,'spring',1,'summer',2,'automn',3,'winter',4)) rn
from A
)group by year