2012-02-16 13 views
8

SQL'den bir XML çıktısı oluşturmaya çalışıyorum ve bir UNION deyimi kullanmam ve aynı zamanda çıktı sütununu adlandırmam gerekiyor.SQL UNION FOR XML ad çıktı sütunu

ben kullanarak bir UNION deyimi kullanmaya gerek yoktu ne zaman önce bu çalışma vardı: XmlOutput olarak çıktı XML sütun adında

select(
SELECT 

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

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

şimdi çalışıyorum

:

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 

Ancak bir hata mesajı alıp, bunun bir yolu bilen var mı?

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. 

Teşekkür J.

+1

hata mesajı ne diyor? – Mithrandir

+0

Yukarıdaki hata mesajı ... teşekkürler – JBoom

cevap

15

tek birinin üzerine 2 seçer sarın ve sonra yapın:

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

Denemek istediğimi anlamadım. – JBoom

+0

UNION etiketinin yanı sıra xml için yalnızca ikinci sorguya uygulandığını düşünüyorum (ayrıştırıcı bir şey). Belki de iki sorguyu tek olarak belirtirseniz, – Diego

+0

neden çalışmıyor? Ben sadece bir test koştu ve mükemmel çalışıyor – Diego