2

我有一个 Sql 语句,它返回根元素是产品的产品的 xml。如何将计数属性添加到根元素。

我的sql是:

SELECT 
id AS 'product_id',
name AS 'product_name'
 FROM product
WHERE status = 1 AND ......
ORDER BY productid
FOR XML PATH('product'), ROOT('products')

结果是

<products>
   <product>
    .
    .
   </product>
</products>

我想将结果更改为

<products count="100">
   <product>
    .
    .
   </product>
</products>
4

1 回答 1

4
SELECT 
COUNT(*) AS '@count',
(
    SELECT * 
    FROM product c1 FOR XML PATH('product'), TYPE
)
FROM product ct FOR XML PATH('products')

最简单的过滤方法是在查询和子查询中添加条件:

SELECT 
COUNT(*) AS '@count',
(
    SELECT * 
    FROM product c1 
    WHERE c1.status = 1 AND ......
    FOR XML PATH('product'), TYPE
)
FROM product ct 
WHERE ct.status = 1 AND ......
FOR XML PATH('products')

或使用临时表:

SELECT *
INTO #Temp
FROM product c1
WHERE c1.status = 1 AND ......


SELECT 
COUNT(*) AS '@count',
(
    SELECT * 
    FROM #Temp c1 
    FOR XML PATH('product'), TYPE
)
FROM #Temp ct 
FOR XML PATH('products')
于 2015-09-15T12:38:53.767 回答