日期:2014-05-17  浏览次数:20427 次

麻烦大家帮忙看一下这道SQL面试题怎么做
这个是已给的查询结果

这个是要我查询出的结果,sql语句怎么写?

------解决方案--------------------

create table #tab(科目 varchar(50),张三 int,李四 int,王五 int)

insert into #tab
select '语文',30,33,33 union all
select '数学',33,55,55 union all
select '英语',44,44,55


select '张三' as 科目,
max(case 科目 when '语文' then 张三 end) '语文',
max(case 科目 when '数学' then 张三 end) '数学',
max(case 科目 when '英语' then 张三 end) '英语'
from #tab 
union all
select '李四',
max(case 科目 when '语文' then 李四 end) '语文',
max(case 科目 when '数学' then 李四 end) '数学',
max(case 科目 when '英语' then 李四 end) '英语'
from #tab 
union all
select '王五',
max(case 科目 when '语文' then 王五 end) '语文',
max(case 科目 when '数学' then 王五 end) '数学',
max(case 科目 when '英语' then 王五 end) '英语'
from #tab 
----------------------------
科目              张三          李四          王五
-------------- ----------- ----------- -----------
语文              30          33          33
数学              33          55          55
英语              44          44          55

(3 行受影响)

科目   语文          数学          英语