2010-06-22 2 views
1

부모 자식 형식으로 필드를 반환하려면 다음 쿼리를 사용합니다. 이것이 가능한가?XML 쿼리 필드를 자식 요소로 변환

여기에 여기에 내가 돌아올하고 싶은거야 쿼리

SELECT Field1, 
     Field2, 
     Field3 
FROM  ATable 
GROUP BY Field1, 
     Field2, 
     Field3 
ORDER BY Field1, 
     Field2, 
     Field3 
FOR xml auto 

의 (exaxtly 수 같이, 난 그냥 계층 구조를 필요로하지 않습니다.) 나는 XML의 나머지를 얻을 수가 캔트 표시되지만 이것이 대부분입니다.

<Field1 Value='1'> 
<Field2 Value='1'> 
    <Field3 Value='2'> 
</Field2> 
<Field2 Value='2'/> 
<Field2 Value='3'/> 
<Field1/> 
<Field1 Value='2'> 
<Field2 Value='1'> 
    <Field3 Value='2'> 
</Field2> 
<Field2 Value='2'/> 
<Field2 Value='3'/> 
<Field1/> 
+0

@ty 조랑말, 정확하게 표시하려면 어떻게해야합니까? – Steve

+0

텍스트 영역의 상단에있는 "코드 샘플"버튼을 사용합니다. 두 줄의 101010입니다. 따옴표는 그 옆에 있고 따옴표를 블록합니다. 서식을 지정하기 위해 코드에서 줄 바꿈과 공백을 수행해야하지만 그렇지 않으면 각 줄이 같은 위치에서 시작됩니다. 귀하의 답변 아래서는 귀하가 정정 한 내용을 미리 볼 수 있으므로 귀하는 교정을 할 수 있습니다. – Kyra

+0

@Kyra - 의견을 기다리고 있습니다. 101010 버튼을 사용하여 'place code here'세그먼트에 붙여 넣었습니다. 때로는 나에게 잘 어울리는 것처럼 보인다. 누가 알지 .. 고마워! – Steve

답변

2

type 옵션을 사용하면 XML 쿼리를 중첩 할 수 있습니다. >

<Field1 Value="1"> 
    <Field2 Value="1"> 
    <Field3 Value="2" /> 
    </Field2> 
    <Field2 Value="2" /> 
    <Field2 Value="3" /> 
</Field1> 
<Field1 Value="2"> 
    <Field2 Value="1"> 
    <Field3 Value="2" /> 
    </Field2> 
    <Field2 Value="2" /> 
    <Field2 Value="3" /> 
</Field1> 

이 복잡하게하는 경향이, 그래서 대신 SQL을 사용하여 XML을 생성하는 대신에 C# 또는 VB.NET 같은 클라이언트 측 언어를 고려 -

declare @t table (Field1 int, Field2 int, Field3 int) 

insert @t values (1,1,2), (1,2,null), (1, 3, null), 
       (2,1,2), (2,2,null), (2,3,null) 

select Field1 as 'Field1/@Value' 
,  (
     select Field2 as 'Field2/@Value' 
     ,  (
       select Field3 as 'Field3/@Value' 
       from @t t3 
       where t3.Field1 = t2.Field1 
         and t3.Field2 = t2.Field2 
         and Field3 is not null 
       for  xml path(''), type 
       ) as 'Field2' 
     from @t t2 
     where t2.Field1 = t1.Field1 
       and Field2 is not null 
     for  xml path(''), type 
     ) as 'Field1' 
from @t t1 
group by 
     Field1 
for  xml path(''), type 

: 다음은 그 예입니다.

+0

위대한 ty 작품! 그래, 나는 그것을 C#에서 모두 분석 할 수 있고 트리 구조로 표시 할 수있다. 그게 내가 항상 해왔 던 것. 이 기능을 사용해 트리 함수에 다시 같은 레코드를 변환하는 것을 피할 수 있습니다. – Steve

+0

우수! 내가 뭘 찾고 있었는지. –

관련 문제