2012-04-16 12 views
5

मैं तत्व अनुक्रम कैसे लौट जब एक एसक्यूएल सर्वर दृश्य में पंक्तियों में एक्सएमएल टुकड़ों में XML डेटा टुकड़ों में?तत्व क्रम रक्षित जब एसक्यूएल पंक्तियों

नमूना इनपुट:

<ol> 
    <li>Smith</li> 
    <li>Jones</li> 
    <li>Brown</li> 
</ol> 

वांछित उत्पादन:

Sequence Name 
-------- ----------- 
    1  Smith 
    2  Jones 
    3  Brown 

मौजूदा दृश्य:

CREATE VIEW OrderedList 
AS 
SELECT [Sequence] = CAST(NULL AS int) -- TODO: Get ordinal position 
     [Name] = b.b.value('.', 'nvarchar(max)') 
FROM 
(
    SELECT a = CAST('<ol><li>Smith</li><li>Jones</li><li>Brown</li></ol>' AS xml) 
) a 
CROSS APPLY a.a.nodes('/ol/li') b (b) 

उत्तर

11

आप xml नोड पर row_number() उपयोग कर सकते हैं।

CREATE VIEW OrderedList 
AS 
SELECT [Sequence] = ROW_NUMBER() OVER(ORDER BY b.b), 
     [Name] = b.b.value('.', 'nvarchar(max)') 
FROM 
(
    SELECT a = CAST('<ol><li>Smith</li><li>Jones</li><li>Brown</li></ol>' AS xml) 
) a 
CROSS APPLY a.a.nodes('/ol/li') b (b) 

रेफरी: Uniquely Identifying XML Nodes with DENSE_RANK एडम Machanic द्वारा।

संबंधित मुद्दे