XPATH查询从存储在SQL Server数据库列中的XML获取数据

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)

Shn*_*ugo 5

你不能直接使用XML方法,GROUP BY所以我使用CTE.首先,你得表数据写出XML的,比你可以做一个"正常"的COUNTGROUP 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)