多行记录转一行,公共方法

 

使用说明:

  @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
View Code

 

posted @ 2020-07-07 17:18  狼窝窝  阅读(206)  评论(0编辑  收藏  举报