2010-08-09 3 views
1

SQL Server를 2K8 R2로 업그레이드하는 중입니다. FOR XML AUTO 쿼리 출력이 변경되었습니다.호환성 모드를 사용하지 않고이 xml을 반환하도록 SQL Server 2K8 R2를 얻으려면 어떻게해야합니까?

질의는 세 개의 테이블

결과 집합은 각각의 열이 동일한 바 께 번째 테이블에서 마지막 두 열 인 세 개의 행을 반환에서 열을 출력한다. 결과는 내가 XML 경로에 사용할 노력 해왔다로

<element1 myval="Test"> 
     <element2 myotherval="atest"> 
      <element3 a="a"/> 
     </element2> 
    </element1> 
    <element1 myval="Test"> 
     <element2 myotherval="atest"> 
      <element3 a="B"/> 
     </element2> 
    </element1> 
    <element1 myval="Test"> 
     <element2 myotherval="atest"> 
      <element3 a="C"/> 
     </element2> 
    </element1> 

그것을하지 쇼
<element1 myval="Test"> 
    <element2 myotherval="atest"> 
     <element3 a="a"/> 
     <element3 a="b"/> 
     <element3 a="c" /> 
    </element2> 
</element1> 

아래에 표시하는 데 사용하지만 여전히 오히려 데이터를 그룹화보다에서 element1의 3 개 별도의 인스턴스를 반환합니다.

답변

1

FOR XML PATH를 사용하여 하위 트리를 만들려면 각 하위 트리에 대해 하위 쿼리를 작성해야합니다. 그래서 귀하의 경우 element1에 대한 부모 select 문이 있고 열 중 하나는 element2에 있어야하는 것을 가져 오는 하위 쿼리입니다 (차례로 하위 쿼리가 될 수도 있음). 당신이 하위 쿼리를 사용하고 XML 그에서 반환하려는 경우, XML의 PATH ('elementN으로'), TYPE

위한

을 사용하거나이 XML 코드를 벗어날 수 있습니다.

+0

필자는 중복 된 필드를 그룹화해야 할 필요가 있다고 생각합니까? –

+0

아마, 하위 쿼리는 그 점에서 다소 독립형 일 수 있습니다. 하위 쿼리 내에서 그룹화하여 문제가되지 않아야합니다. – Rob