2010-12-20 47 views
1

这是我的表出XML列的选择值

CREATE TABLE [dbo].[TableA] 
(
    [ObjectID] [int] IDENTITY(1,1) NOT NULL, 
    [CGPracticeCode] [varchar](5) NULL, 
    [TotalAmt] [decimal](11, 2) NULL, 
    [SplitAmt] [xml] NULL, 
) 

在SplitAmt列中的值是在下面的格式,没有行可能会有所不同

'<Values> 
    <Row> 
    <PracticeCode>BE9</PracticeCode> 
    <Value>20</Value> 
    </Row> 
    <Row> 
    <PracticeCode>BEA</PracticeCode> 
    <Value>3</Value> 
    </Row> 
</Values>' 

现在怎么办结构我(在重复第一个3列没问题)得到的值是这样的...

ObjectID, CGPracticeCode, TotalAmt, PracticeCode, [Value] 
+0

所以,你必须为每个的ObjectId多个PracticeCode和价值? – 2010-12-20 13:55:48

+0

是...... – 2010-12-20 14:23:52

回答

0

看一看this article by Alex Homer

要返回的第一行的元素,你可以使用:

select a.ObjectId, 
     a.CGPracticeCode, 
     a.TotalAmt, 
     a.SplitAmt.value('(/Values/Row/PracticeCode)[1]', 'nvarchar(50)') as PracticeCode, 
     a.SplitAmt.value('(/Values/Row/Value)[1]', 'int') as [Value] 
from [dbo].[TableA] a