日期:2014-05-20  浏览次数:20658 次

给大家出个题,怎样实现下面的SQL语句检索?
假设有以下数据:
公司 部门 部长姓名
-----------------------------------
AAA 01 Name1
AAA 02 Name2
AAA 03 Name3
BBB 01 Name4
BBB 03 Name5
CCC … …
已知(公司+部门)为主键,且部门只有01、02、03三种,现需要得到以下报表:
公司 部门01的部长姓名 部门02的部长姓名 部门03的部长姓名
------------------------------------
AAA Name1 Name2 Name3
BBB Name4 无此部门 Name5
CCC …
        请试用一个SQL语句完成以上数据的检索。


------解决方案--------------------
如果是ora,把case when 换成decode即可
------解决方案--------------------
select 公司,
max(decode(decode(部门, '01 ',部长姓名),null, '无此部门 ',decode(部门, '01 ',部长姓名))) as 部门01的部长姓名,
max(decode(decode(部门, '02 ',部长姓名),null, '无此部门 ',decode(部门, '02 ',部长姓名))) as 部门02的部长姓名,
max(decode(decode(部门, '03 ',部长姓名),null, '无此部门 ',decode(部门, '03 ',部长姓名))) as 部门03的部长姓名
from 表
group by 公司