首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-02-17 
列转行到视图 的问题??求教张三语文602李四数学703王五英语804王五数学755王五语文576李四语文807张三英语

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



张三语文602
李四数学703
王五英语804
王五数学755
王五语文576
李四语文807
张三英语1008


把这个转成行
姓名   数学   英语   语文
李四   70080
王五   758057
张三   010060


语句如下
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)  

我想把它写成视图,或给出用法:目的是和别的表组合在一起
例如:好要有家庭住址,年龄什么的这些都是单表
姓名   数学   英语   语文       家庭住址     年龄
李四   70080       1村             14
王五   758057       2村             16
张三   010060       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 姓名

热点排行