【发布时间】:2014-03-03 15:18:50
【问题描述】:
您好,我将 XML 数据存储在一个表中。 XML 数据看起来像这样。
<Contacts>
<Contact>
<Name>Evan Gabriel</Name>
<PhoneNumbers>
<PhoneNumber Type="Home" Number="555-1224" />
<PhoneNumber Type="Work" Number="578-9812" />
<PhoneNumber Type="Cell" Number="578-7299" />
</PhoneNumbers>
</Contact>
<Contact>
<Name>Elizabeth Dallas</Name>
<PhoneNumbers>
<PhoneNumber Type="Home" Number="714-5488" />
<PhoneNumber Type="Cell" Number="714-1099" />
</PhoneNumbers>
</Contact>
<Contact>
<Name>Anna Palmer</Name>
<PhoneNumbers>
<PhoneNumber Type="Work" Number="555-1440" />
<PhoneNumber Type="Cell" Number="714-0523" />
</PhoneNumbers>
</Contact>
</Contacts>
我要做的是获取每个客户的联系号码计数,并且我希望重新调整的输出采用 XML 数据类型。
我想要的输出如下:
<Contacts>
<Contact>
<Name>Elizabeth Dallas</Name>
<NumFound>2</NumFound>
</Contact>
<Contact>
<Name>Anna Palmer</Name>
<NumFound>2</NumFound>
</Contact>
<Contact>
<Name>Evan Gabriel</Name>
<NumFound>3</NumFound>
</Contact>
</Contacts>
以下是我的尝试:
SELECT
COUNT(*) AS NumCount
FROM
(SELECT Xml_DATA FROM Xml_Table) AS XmlTable(XmlColumn)
CROSS APPLY
XmlColumn.nodes('/Contacts/Contact/Name/PhoneNumbers/PhoneNumber') XmlTableFunction(XmlColumn2)
但我认为我离实际解决方案还差得很远。非常感谢任何正确方向的帮助或指示。
在此先感谢您。
SQL FIDDLE with Test Data and My Attempt
【问题讨论】:
标签: sql-server xml sql-server-2008 xquery