--交叉表处理的通用存储过程
--自己稍微改下就可以了!
create proc p_qry
@tbname sysname, --要处理的表名
@groupfd sysname, --分组的字段
@mergfd sysname --合并的字段名
as
exec('select a=cast('+@groupfd+' as varchar)
,b=cast('+@mergfd+' as varchar)
,r=cast('''' as varchar(8000)) 
into #t from '+@tbname+'
declare @a varchar(8000),@r varchar(8000)
update #t set @r=case @a when a then @r+'',''+b else b end
,r=@r,@a=a
select '+@groupfd+'=a,'+@mergfd+'=max(r) from #t group by a
')
go--调用示例
exec p_qry 'syscolumns','id','name'
go