我将 XML 数据存储在 SQL Server 数据库中的一列中。
<data>
<row>
<element name="product">Piston</element>
<element name="number">1.2</element>
</row>
<row>
<element name="product">Piston Ring</element>
<element name="number">2</element>
</row>
<row>
<element name="product">Piston</element>
<element name="number">1.5</element>
</row>
</data>
有没有一种方法可以获得以下格式的结果?
------------------------------
Product | Count
------------------------------
Piston | 2
Piston Ring| 1
------------------------------
我尝试使用 Xpath 进行计数,但不确定是否可以按产品分组然后进行计数。
我正在寻找类似(在 SQL 查询中)的东西
SELECT Product, Count(Product) FROM ABC
GROUP BY Product
最佳答案
您不能在 GROUP BY
中直接使用 XML 方法,所以我会使用 CTE。首先,您从 XML 中获取表格数据,然后您可以使用 GROUP BY
执行“正常”COUNT
:
DECLARE @xml XML=
'<data>
<row>
<element name="product">Piston</element>
<element name="number">1.2</element>
</row>
<row>
<element name="product">Piston Ring</element>
<element name="number">2</element>
</row>
<row>
<element name="product">Piston</element>
<element name="number">1.5</element>
</row>
</data>';
;WITH MyRows AS
(
SELECT OneRow.value('(element[@name="product"])[1]','varchar(max)') AS Product
FROM @xml.nodes('/data/row') AS A(OneRow)
)
SELECT Product,COUNT(Product) AS [Count]
FROM MyRows
GROUP BY Product
关于c# - XPATH 查询以从存储在 SQL Server 数据库列中的 XML 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35645684/