как вывести xml со значением атрибута и поля в TSQL - PullRequest
2 голосов
/ 14 декабря 2011

Я хотел бы вывести некоторые поля из таблицы в 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('')

спасибо заранее, Леон

1 Ответ

7 голосов
/ 14 декабря 2011

Я думаю, вы ищете что-то вроде этого:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...