海豚宝宝的代码生活

专注于.Net系统开发

导航

数据表的行列转换

1.普通的行列转换
if exists(Select Name From SySObjects Where Name = 'V_TEST' And Xtype ='V')
    
Drop View V_TEST

declare @sql varchar(4000)
set @sql = ' create view V_TEST as select ProjectID'
select @sql = @sql + ',max(case PropertyID when '''+PropertyID+''' then Value end) ['+PropertyID+']'
from (select distinct PropertyID from ProjectProperty) as a
select @sql = @sql+' from ProjectProperty group by ProjectID'
exec(@sql)

select * From V_TEST

2. 带合并的行列转换
创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from 表A where id=@id set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct id,dbo.fmerg(id) from 表A

posted on 2007-08-30 16:16  Bruse  阅读(269)  评论(0)    收藏  举报