【发布时间】:2018-03-22 19:59:50
【问题描述】:
我正在编写一个选择查询,其中我正在获取几列(通过连接 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
其中一个表有一个 XML 数据类型的列。当我在选择列表中添加列时,出现此错误 -
选择列表中的“table.myXML”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
当我在 group by 子句中添加列时,我收到此错误 -
无法对 XML 数据类型进行比较或排序,除非使用 IS NULL 运算符。
我很困惑如何摆脱这种情况。 我想从列中获取 XML 数据。
谢谢
【问题讨论】:
-
您能否给我们实际的查询和表结构,以便我们了解您为什么使用
GROUP BY?您没有在那里使用任何聚合。CandidateId也可以有多个不同的DetailXML行吗? -
Martin,我原来的查询很长,解释我的表结构会很不方便。我理解你的意思,但我不能在这里讨论我的数据库结构。我只是想要一个提示/技巧来让事情顺利进行。
-
如果candidate_id 是candidate_instance 中的主键,这很简单:您可以使用cte 并将cte 连接到选择XML 的表中。这将比公认的答案快得多。
标签: sql-server xml group-by