2012-02-16 3 views
8

SQL에서 XML 출력을 생성하려고하는데 UNION 문을 사용해야하고 출력 열의 이름을 지정해야합니다.XML UNION FOR XML 이름 출력 열

내가 사용하여 UNION 문을 사용하지 않았을 때 전에이 작업했다 : XmlOutput로 출력 XML 열 이름

select(
SELECT 

    [CompanyName], 
    [Address1], 
    [Address2], 
    [Address3], 
    [Town], 
    [County], 
    [Postcode], 
    [Tel], 
    [Fax], 
    [Email], 
    [LocMap] 

FROM [UserAccs] FOR XML PATH ('AccountDetails'), root ('Root') 
) as XmlOutput 

지금 노력하고

:

select(
SELECT 

    [CompanyName], 
    [Address1], 
    [Address2], 
    [Address3], 
    [Town], 
    [County], 
    [Postcode], 
    [Tel], 
    [Fax], 
    [Email], 
    [LocMap] 

FROM [UserAccs] 

UNION 

SELECT 

    [CompanyName], 
    [Address1], 
    [Address2], 
    [Address3], 
    [Town], 
    [County], 
    [Postcode], 
    [Tel], 
    [Fax], 
    [Email], 
    [LocMap] 

FROM [UserAppAccs] 



FOR XML PATH ('AccountDetails'), root ('Root') 
) as XmlOutput 

오류 메시지가 표시됩니다.이 문제를 해결하는 방법을 알고 있습니까?

The FOR XML clause is invalid in views, inline functions, derived tables, and subqueries when they contain a set operator. To work around, wrap the SELECT containing a set operator using derived table syntax and apply FOR XML on top of it. 

감사 J.

+1

오류 메시지가 무엇을 말합니까? – Mithrandir

+0

위의 오류 메시지 ... 감사합니다. – JBoom

답변

15

은 하나 하나에 당신이 선택을 포장 한 후 수행

select (
    select id, name from (
     select id, name 
     from xmltest 
     UNION 
     select id, name 
     from xmltest 
) A 
FOR XML PATH ('AccountDetails'), root ('Root') 
) As XmlOutput 
+0

시도해 볼 것을 묻지 않습니다. – JBoom

+0

UNION 태그 외에도 xml이 두 번째 쿼리에만 적용된다고 생각합니다 (구문 분석). 어쩌면 두 쿼리를 하나로 지정할 경우 – Diego

+0

왜 downvote가 작동할까요? 방금 테스트를 실행하고 완벽하게 작동합니다. – Diego