使用FOR XML PATH时出错

时间:2014-05-01 18:03:01

标签: sql sql-server

我正在尝试将一列的结果连接成文本字符串并遇到FOR XML PATH。我试图使用它,但一直在使用

  

关键字“FOR”附近的语法不正确。

  

关键字“XML”附近的语法不正确

这是我的代码

SELECT DISTINCT
   i1.CompanyID,
   i1.Company,
   i1.IncidentID,
   i1.Description,
   i1.CreatedDate,
   i1.AssignedTo,
   i1.Priority,
   i1.StatusID,
   i1.Status,

   Notes = REPLACE( (SELECT Notes AS [data()] 
                     FROM tempdb.dbo.tempIncident i2 
                     WHERE i1.IncidentID = i2.IncidentID
                     ORDER BY i2.Notes
                     FOR XML PATH ('')), ' ', ',')
FROM 
   tempdb.dbo.tempIncident i1

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您使用的是SQL Server的旧版本,例如SQL2000,其中不支持XML路径。如果您查看PATH未标记为蓝色的关键字。

请理解这个article,你会找到一种在SQL 2000中进行字符串连接的方法。

答案 1 :(得分:0)

SELECT 
    i1.CompanyID,
    i1.Company,
    i1.IncidentID,
    i1.[Description],
    i1.CreatedDate,
    i1.AssignedTo,
    i1.[Priority],
    i1.StatusID,
    i1.[Status],
    STUFF( (SELECT ', ' + i2.Notes  [text()] 
            FROM tempdb.dbo.tempIncident i2 
            WHERE  i1.IncidentID = i2.IncidentID
            FOR XML PATH(''),TYPE)
            .value('.','NVARCHAR(MAX)'),1, 2, '') AS [Notes]
FROM tempdb.dbo.tempIncident i1
GROUP BY i1.CompanyID,
        i1.Company,
        i1.IncidentID,
        i1.[Description],
        i1.CreatedDate,
        i1.AssignedTo,
        i1.[Priority],
        i1.StatusID,
        i1.[Status]