2013-07-04 3 views
3

XML 테이블의 한 열에 내 테이블에 세 개의 열이 있습니다. 다른 행에 XML 데이터의 다른 노드를 표시하려고합니다. LikeSQL 서버 : 다른 행의 XML 노드를 분리하는 방법

Col1  Col2   Col3 
12  ABC   <Interactions><interaction id='2' name='A'/><interaction id='3' name='B'/></Interactions> 

다른 행에서 서로 다른 상호 작용을 표시하는 방법은 무엇입니까? 좋아요,

Row1 : 12 ABC 2 A 
Row2 : 12 ABC 3 B 

감사합니다. ANK

답변

2

SELECT 
    A.Col1 
    ,A.Col2 
    ,Split.interaction.value('@id', 'INT') AS [ID] 
    ,Split.interaction.value('@name', 'VARCHAR(10)') AS [Name] 
FROM 
(
    SELECT Col1, Col2, Col3 FROM #Tablexml 
) AS A CROSS APPLY Col3.nodes ('/Interactions/interaction') AS Split(interaction); 

DEMO

0
select 
    T.Col1, T.Col2, 
    C.N.value('@id', 'int') as ID, 
    C.N.value('@name', 'nvarchar(max)') as Name 
from Table1 as T 
    outer apply T.Col3.nodes('Interactions/interaction') as C(N) 

sql fiddle demo

시도