2017-01-31 4 views
2

Я использую функциональность FOR XML в SQL Server, но я хочу изменить формат получаемого xml.Microsoft SQL Server 2014 изменить формат сгенерированного xml

Это мой запрос:

SELECT * 
FROM dbo.myTable AS row 
FOR XML RAW, ELEMENTS, ROOT('rows') 

Результат:

<rows> 
    <row> 
     <name>A Time to Kill</name> 
     <author>John Grisham</author> 
     <price>12.99</price> 
    </row> 
    <row> 
     <name>Blood and Smoke</name> 
     <author>Stephen King</author> 
     <price>10</price> 
    </row> 
</rows> 

но результат я хочу:

<rows> 
    <row id="1"> 
     <cell>A Time to Kill</cell> 
     <cell>John Grisham</cell> 
     <cell>12.99</cell> 
    </row> 
    <row id="2"> 
     <cell>Blood and Smoke</cell> 
     <cell>Stephen King</cell> 
     <cell>10</cell> 
    </row> 
</rows> 

Как я могу добиться этого? Я попытался изменить «авто» для «raw» или «path», но это не сработало.

Привет, Рафал

ответ

4
Declare @YourTable table (id int,name varchar(50),author varchar(50),price money) 
Insert Into @YourTable values 
(1,'A Time to Kill','John Grisham',12.99) 
,(2,'Blood and Smoke','Stephen King',10) 

Select [@id] = id 
     ,[cell] = name 
     ,null 
     ,[cell] = author 
     ,null 
     ,[cell] = price 
From @YourTable 
For XML Path('row'),root('rows') 

Возвращает

<rows> 
    <row id="1"> 
    <cell>A Time to Kill</cell> 
    <cell>John Grisham</cell> 
    <cell>12.9900</cell> 
    </row> 
    <row id="2"> 
    <cell>Blood and Smoke</cell> 
    <cell>Stephen King</cell> 
    <cell>10.0000</cell> 
    </row> 
</rows> 
+0

Привет, поздравляю к ** SQL-сервер Золотого Знаку ** :-) Я знаю, нет :-) – Shnugo

+0

шаров @ Шнуго Спасибо. Не стоит беспокоиться, я держу приставные шляпы шумоподобными для таких случаев ... Немного грустно, когда вы об этом думаете. –

+0

Приветствую, отлично работает! :-) – Rafalsonn