3 250
*/
drop table tb
---------------------------------------------------------
---------------------------------------------------------
/*
如果上述两表互相换一下:即
姓名 语文 数学 物理
张三74 83 93
李四74 84 94
想变成
Name Subject Result
---------- ------- -----------
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 74
张三 数学 83
张三 物理 93
*/
create table tb1
(
姓名varchar(10) ,
语文int ,
数学int ,
物理int
)
insert into tb1(姓名, 语文, 数学, 物理) values('张三',74,83,93)
insert into tb1(姓名, 语文, 数学, 物理) values('李四',74,84,94)
select * from
(
select 姓名as Name , Subject = '语文' , Result = 语文from tb1
union all
select 姓名as Name , Subject = '数学' , Result = 数学from tb1
union all
select 姓名as Name , Subject = '物理' , Result = 物理from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '总分' then 4 end
--------------------------------------------------------------------
/*加个平均分,总分
Name Subject Result
---------- ------- --------------------
李四 语文 74.00
李四 数学 84.00
李四 物理 94.00
李四 平均分 84.00
李四 总分 252.00
张三 语文 74.00
张三 数学 83.00
张三 物理 93.00
张三 平均分 83.33
张三 总分 250.00
*/
select * from
(
select 姓名as Name , Subject = '语文' , Result = 语文from tb1
union all
select 姓名as Name , Subject = '数学' , Result = 数学from tb1
union all
select 姓名as Name , Subject = '物理' , Result = 物理from tb1
union all
select 姓名as Name , Subject = '平均分' , Result = cast((语文+ 数学+ 物理)*1.0/3 as decimal(18,2)) from tb1
union all
select 姓名as Name , Subject = '总分' , Result = 语文+ 数学+ 物理from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end
drop table tb1
摘自 RegeditNo1的专栏