将多列/行表输出转换为单个字符串

问题描述 投票:0回答:1

我有一个名为 #table1 的表,它更大,但与下面的类似。我想将结果移至单个字符串变量。

A 栏 B 栏 C 栏 D 栏
日期1 数据值1 标识符1 描述1
日期2 数据值2 标识符2 描述2

我希望表将表引用为字符串变量,格式为列用下划线分隔,行用逗号分隔 - 例如:

@var = 'date1_datavalue1_identifier1_description1,date2_datavalue2_identifier2_description2'

我已经用下面的方法在较小的范围内手动完成了此操作

select convert(varchar,columnA) + '_' + convert(varchar,ColumnB) + '_' + convert(varchar,columnC) + '_' + convert(varchar,columnD) as comment
from #table1 

这在 SQL 中可能吗?有没有一种方法可以动态地执行此操作,不受表行数的限制?

sql sql-server t-sql data-analysis
1个回答
0
投票

您可以尝试下面的代码示例。

dbfiddle 链接:https://dbfiddle.uk/vQOQSH58

DECLARE @var varchar(max)

SELECT @var = STUFF((SELECT ',' + convert(varchar,columnA) + '_' + convert(varchar,ColumnB) + '_' 
                           + convert(varchar,columnC) + '_' + convert(varchar,columnD)
                    FROM table1 
                    FOR XML PATH('')), 1, 1, '')

SELECT @var as comment

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.