当前位置: 代码迷 >> Oracle开发 >> oracle数据库面试题,请各个给点思路
  详细解决方案

oracle数据库面试题,请各个给点思路

热度:50   发布时间:2016-04-24 06:35:27.0
oracle数据库面试题,在线等,请各个给点思路
有一道数据库的题大概意思如下:
一张表 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
  相关解决方案