2011-12-14 15 views
2

xmlのテーブルからいくつかのフィールドを出力したいと思います。名前の属性に列の名前を入れる必要があります。出力は似ている必要があります。TSQLでXML属性とフィールド値を出力する方法

<udfields> 
<udfield name="infoplanner">Test for the info</udfield> 
<udfield name="plant">Amsterdam</udfield> 
<udfield name="capability"/> 
</udfields> 

が、私はのようなものを試してみました:事前に

SELECT TOP 3 
    ko.infoPlanner AS "udfield/name/@infoplanner" 
    , ko.plant AS "udfield/name/@plant" 
    , ko.capability AS "udfield/name/@capability" 
FROM sometable ko 
WHERE CONVERT(VARCHAR(8), ko.datumtijd, 112) = CONVERT(VARCHAR(8), GETDATE(), 112) 
     AND COALESCE(ko.infoPlanner, '') <> '' 
FOR  XML PATH('') 

おかげで、レオン

答えて

6

を私はあなたがこのような何かを探していると思います:

declare @T table 
(
    infoplanner int, 
    plant int, 
    capability int 
) 

insert into @T 
select 1, 2, 3 union all 
select 10, 20 ,30 

select (select 'infoplanner' as '@name', 
       infoplanner as '*' 
     for xml path('udfield'), type), 
     (select 'plant' as '@name', 
       plant as '*' 
     for xml path('udfield'), type), 
     (select 'capability' as '@name', 
       capability as '*' 
     for xml path('udfield'), type) 
from @T 
for xml path('udfields') 

結果:

<udfields> 
    <udfield name="infoplanner">1</udfield> 
    <udfield name="plant">2</udfield> 
    <udfield name="capability">3</udfield> 
</udfields> 
<udfields> 
    <udfield name="infoplanner">10</udfield> 
    <udfield name="plant">20</udfield> 
    <udfield name="capability">30</udfield> 
</udfields> 
+0

それは、ありがとうMikael – lcarpay

+0

@lcarpayよく聞いてください。あなたが望むものなら、左側のチェックマークを使って答えを受け入れるべきです。 –

関連する問題