2015-09-15 80 views
2

我有一個Sql語句,它返回根元素是產品的產品的xml。我怎樣才能將count屬性添加到根元素。使用FOR XML PATH將計數添加到根元素

我的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> 
+0

=? – wiretext

+0

我想採取實際的產品數量 – Can

回答

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') 
你只需添加數= 100或你想利用XML格式的實際計數它應該出現在數
+0

其實我不想要所有的產品,我有一些條件,所以我編輯了這個問題。 – Can

+0

@doganhisa檢查更新版本 – Backs

+0

謝謝,這意味着我需要添加條件,以查詢和子查詢。難道只有一次寫作條件是不可能的。因爲我給的查詢就是例子,我的實際查詢很長。 – Can