列转行到视图 的问题??求教
张三语文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 姓名