У меня есть таблица, которую я хотел бы преобразовать в формат XML. Таблица называется TempTable и содержит данные, как например:TSQL для форматирования XML
REF DESC QTY
100001 Normal 1
100002 OOH 1
Мне нужно, чтобы создать XML в этом заданном формате:
<row>
<LIN NUM="1">
<FLD NAME="REF">100001</FLD>
<FLD NAME="DES">Normal</FLD>
<FLD NAME="QTY">1</FLD>
</LIN>
<LIN NUM="2">
<FLD NAME="REF">100002</FLD>
<FLD NAME="DES">OOH</FLD>
<FLD NAME="QTY">1</FLD>
</LIN>
</row>
Я попытался следующий код:
SET @line = (SELECT '1' AS '@NUM', REF AS 'REF', DES AS 'DES', QTY AS 'QTY' FROM tempTable WHERE ORDER= @ORDER
FOR XML PATH('LIN'))
SELECT @line
FOR XML PATH
Однако это дает:
<row>
<LIN NUM="1">
<REF>100001</REF>
<DES>Normal</DES>
<QTY>1</QTY>
</LIN>
<LIN NUM="1">
<REF>100002</REF>
<DES>OOH</DES>
<QTY>1</QTY>
</LIN>
</row>
Кто-нибудь знает, как я могу:
- A) Изменить атрибут «Lin» «Num» быть инкрементным на основе количества записей для этого заказа?
B) Добавьте атрибут «Имя» в данные «LIN» и измените имена полей на «FLD». Когда я пытаюсь изменить название «FLD» он concats значения на одном узле, как таковой:
<row> <LIN NUM="1"> <FLD>100001Normal1</FLD> </LIN> <LIN NUM="1"> <FLD>100002OOH1</FLD> </LIN> </row>
Я предполагаю, что, если я могу добавить атрибут «NAME», что бы выделить значения?
Любые советы/помощь были бы весьма полезны.
Благодаря
Большое спасибо за ваш быстрый и простое решение! – robbiecutting
Я не знал трюка с пустой струной и был просто озадачен этим. Ницца ... – Shnugo
@ Шнуго Что-то о том, что на самом деле делает трюк. http://stackoverflow.com/a/29234102/569436 –