在SQL Server 2008中使用group选择查询中的xml类型列

saa*_*hak 7 xml sql-server group-by

我正在编写一个select查询,其中我将获取多个列(通过连接3-4个表).我使用group by子句对结果进行分组.

查询 -

    select ci.Candidate_Id, ci.FirstName, ci.DetailXML
from Candidate_Instance ci 
where ci.Candidate_Instance_Id=2
group by 
ci.Candidate_Id, ci.FirstName, ci.DetailXML
Run Code Online (Sandbox Code Playgroud)

其中一个表有一个XML数据类型的列.当我在选择列表中添加列时,我收到此错误 -

列'table.myXML'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

当我在group by子句中添加列时,我收到此错误 -

除非使用IS NULL运算符,否则无法比较或排序XML数据类型.

我很困惑如何摆脱这个.我想从列中获取XML数据.

谢谢

Ric*_*iwi 18

您不能按XML或TEXT列进行分组,首先需要转换为varchar(max)

select ci.Candidate_Id, ci.FirstName, convert(xml,convert(varchar(max),ci.DetailXML)) DetailXML
from Candidate_Instance ci 
where ci.Candidate_Instance_Id=2
group by 
ci.Candidate_Id, ci.FirstName, convert(varchar(max),ci.DetailXML)
Run Code Online (Sandbox Code Playgroud)

在第一行,它被转换为varchar(max)以匹配GROUP BY子句,稍后它将重新转换回XML.