我有一个数据库,其中有一个带有 XML 列的表。XML 数据有一堆看起来像这样的子节点:
<test>
<result id="1234">
<data elementname="Message">some error message</data>
<data elementname="Cat">Cat01</data>
<data elementname="Type">WARNING</data>
</result>
<result id="5678">
<data elementname="Message">some error message</data>
<data elementname="Cat">Cat01</data>
<data elementname="Type">WARNING</data>
</result>
</test>
Cat 元素可以有许多不同的值。我正在尝试创建有关此数据的报告,所以我想做的一件事是获取我们数据中所有类别的列表。这是我的查询:
Select Id, XmlData.query('/test/result/data[@elementname = ''Cat''] ') AS Message
From Table
WHERE XmlData.exist('/test/result/data[@elementname = ''Cat'']') = 1
ORDER BY FriendlyName
这正确地使用这种类型的分类获取了我的表中的所有行(没有该元素的同一个表中会有其他结果),但是对于每个表记录,这些类别都组合成一列:
Id1, <data elementname="Cat">Cat01</data><data elementname="Cat">Cat01</data>
Id2, <data elementname="Cat">Cat01</data><data elementname="Cat">Cat01</data>
我包括了 Id 列,所以很容易看到数据来自哪里,主要问题是我只能让它连接每一行的值 - 我需要每个数据元素都有自己的行,然后也许对结果做一个 Select Distinct 。
有没有办法我可以做到这一点?
谢谢