A30*_*006 2 c# xml t-sql sql-server xpath
我将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>
Run Code Online (Sandbox Code Playgroud)
有没有办法可以得到以下格式的结果?
------------------------------
Product | Count
------------------------------
Piston | 2
Piston Ring| 1
------------------------------
Run Code Online (Sandbox Code Playgroud)
我尝试使用Xpath,它给了我任何东西,但不确定我是否可以按产品分组,然后计算.
我正在寻找类似的东西(在SQL查询中)
SELECT Product, Count(Product) FROM ABC
GROUP BY Product
Run Code Online (Sandbox Code Playgroud)
你不能直接使用XML方法,GROUP BY所以我使用CTE.首先,你得表数据写出XML的,比你可以做一个"正常"的COUNT有GROUP BY:
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
Run Code Online (Sandbox Code Playgroud)