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