这是我表格的结构
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 :(得分:0)
要返回可以使用的第一个Row元素:
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