日期:2014-05-18  浏览次数:20552 次

列转行到视图 的问题??求教



张三 语文 60 2
李四 数学 70 3
王五 英语 80 4
王五 数学 75 5
王五 语文 57 6
李四 语文 80 7
张三 英语 100 8


把这个转成行
姓名   数学   英语   语文
李四   70 0 80
王五   75 80 57
张三   0 100 60


语句如下
declare   @sql   varchar(8000)  

set   @sql   =   'select   name   as   姓名, '  
select   @sql   =   @sql   +   'sum(case   subject   when   ' ' '+subject+ ' ' '    
then   source   else   0   end)   as   ' ' '+subject+ ' ' ', '  
from   (select   distinct   subject   from   test)   as   a
select   @sql   =   left(@sql,len(@sql)-1)   +   '   from   test   group   by   name '  
exec(@sql)  

我想把它写成视图,或给出用法:目的是和别的表组合在一起
例如:好要有家庭住址,年龄什么的这些都是单表
姓名   数学   英语   语文       家庭住址     年龄
李四   70 0 80       1村             14
王五   75 80 57       2村             16
张三   0 100 60       3村               15
以姓名为关联的.
谢谢你们了,这个问题能实现吗,具体怎么实现啊,谢谢你们了,
看的帮我顶一下好吗?
我觉得我很无助摸不着头脑.................
谢谢.

------解决方案--------------------
用这种动态的作不了视图,如果你的科目知道是固定的,倒可以:
create view vw_test
as
select 姓名,
数学=sum(case when 科目= '数学 ' then score else 0 end),
英语=sum(case when 科目= '英语 ' then score else 0 end),
语文=sum(case when 科目= '语文 ' then score else 0 end)
from [Table] group by 姓名