数据表的行列转换
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
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_TEST2. 带合并的行列转换
创建一个合并的函数
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
浙公网安备 33010602011771号