假设有以下数据:
公司 部门 部长姓名
-----------------------------------
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语句完成以上数据的检索。
公司 部门 部长姓名
-----------------------------------
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语句完成以上数据的检索。
select 公司,
max(case when 部门 = '01' then 部长姓名 end) as 部门01的部长姓名
max(case when 部门 = '02' then 部长姓名 end) as 部门02的部长姓名
max(case when 部门 = '03' then 部长姓名 end) as 部门03的部长姓名
from 表
group by 公司
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 公司
最外层的那个decode 怎么用的?能否讲解一下? 结果是对的,但是就是不明白最外层的decode 是怎么回事?呵呵~~