我有一个名为 #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 中可能吗?有没有一种方法可以动态地执行此操作,不受表行数的限制?
您可以尝试下面的代码示例。
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