使用分组将许多行连接到单个文本字符串中

use*_*736 13 xml sql t-sql sql-server string-concatenation

我有下表:tblFile

tblFile

我想要的输出:

在此输入图像描述

我将许多行连接成一个文本字符串; 但是,我无法正确分组.现在代码只显示FileNameString字段中的每条记录:AAA,BBB,CCC,DDD,EEE,FFF

任何有关分组的建议!

SELECT FileID, Stuff(
(SELECT     N', ' + CONVERT(Varchar, FileName) 
FROM         tblFile  FOR XML PATH(''),TYPE )
.value('text()[1]','nvarchar(max)'),1,2,N'')AS FileNameString 
From tblFile
GROUP BY FileID
Run Code Online (Sandbox Code Playgroud)

Jas*_*nko 19

试试这个 -

SELECT DISTINCT
      fileid
    , STUFF((
        SELECT N', ' + CAST([filename] AS VARCHAR(255))
        FROM tblFile f2
        WHERE f1.fileid = f2.fileid ---- string with grouping by fileid
        FOR XML PATH (''), TYPE), 1, 2, '') AS FileNameString
FROM tblFile f1
Run Code Online (Sandbox Code Playgroud)

  • 我收到一个错误:参数数据类型xml对于stuff函数的参数1无效. (13认同)
  • 删除工作版本的TYPE参数.TYPE使结果作为XML数据类型返回,但STUFF需要一个字符串. (5认同)