多行记录转一行,公共方法
使用说明:
@search_sql 查询结果集sql语句 比如 select name from table (结果集为多行)
@column_name 查询结果集的列名 在这个例子中应该传入 name
1 ---------------公共方法:单独多行记录转一列----------- 2 Create Proc [dbo].[sp_public_rows_to_column] 3 ( 4 @search_sql nvarchar(2000), --查询结果集sql语句 5 @column_name nvarchar(20) --查询结果集的列名 6 ) 7 as 8 begin 9 10 --给语句重新赋值 11 set @search_sql = 'select ' + @column_name + ' as content from (' + @search_sql + ') as a' 12 13 --创建表变量 14 declare @table_rows_to_column table 15 ( 16 content nvarchar(2000) 17 ) 18 19 --将执行结果添加到表变量中 20 insert into @table_rows_to_column exec sp_executesql @search_sql 21 22 --查询出结果 23 SELECT LEFT(list,LEN(list)-1) as content FROM ( 24 select ( 25 select content+',' from @table_rows_to_column 26 for xml path('')) as list 27 ) b 28 29 30 end