Мне нужно создать файл EXCEL Like XML, вставляющий данные из таблицы в SQL Server. После некоторых исследований у меня есть следующий сценарий SQL Server с помощью EXPLICIT режима FOR XML:FOR XML EXPLICIT - повторяет значения атрибутов
DECLARE @T AS TABLE (col1 VARCHAR(20), col2 VARCHAR(20));
INSERT INTO @T VALUES('Row1 Col1', 'Row1 Col2');
INSERT INTO @T VALUES('Row2 Col1', 'Row2 Col2');
SELECT \t 1 \t \t \t as 'Tag'
\t \t ,NULL \t \t as 'Parent'
\t \t ,NULL \t \t as 'Row!1'
\t \t ,NULL \t \t as 'Cell!2'
\t \t ,NULL \t \t as 'Cell!2!Index'
\t \t ,NULL \t \t as 'Cell!2!StyleID'
\t \t ,NULL \t \t as 'Data!3'
\t \t ,NULL \t \t as 'Data!3!Type'
\t \t ,NULL \t \t as 'Cell!2'
\t \t ,NULL \t \t as 'Cell!2!Index'
\t \t ,NULL \t \t as 'Cell!2!StyleID'
\t \t ,NULL \t \t as 'Data!3'
\t \t ,NULL \t \t as 'Data!3!Type'
\t \t ,ROW_NUMBER() OVER (ORDER BY col1) as 'Row!1!A!HIDE'
\t \t ,1 \t \t \t as 'Row!1!B!HIDE'
FROM @T
UNION ALL
SELECT \t 2
\t \t ,1
\t \t ,NULL
\t \t ,NULL
\t \t ,'1'
\t \t ,'s1'
\t \t ,NULL
\t \t ,NULL
\t \t ,NULL
\t \t ,'2'
\t \t ,'s2'
\t \t ,NULL
\t \t ,NULL
\t \t ,ROW_NUMBER() OVER (ORDER BY col1)
\t \t ,2
FROM @T
UNION ALL
SELECT \t 3
\t \t ,2
\t \t ,NULL
\t \t ,NULL
\t \t ,NULL
\t \t ,NULL
\t \t ,col1
\t \t ,'String'
\t \t ,NULL
\t \t ,NULL
\t \t ,NULL
\t \t ,col2
\t \t ,'String'
\t \t ,ROW_NUMBER() OVER (ORDER BY col1)
\t \t ,3
FROM @T
ORDER BY 14, 15
FOR XML EXPLICIT
GO
В результате я получаю это:
<Row>
<Cell Index="1" StyleID="s1" Index="2" StyleID="s2">
<Data Type="String" Type="String">Row1 Col1Row1 Col2</Data>
</Cell>
</Row>
<Row>
<Cell Index="1" StyleID="s1" Index="2" StyleID="s2">
<Data Type="String" Type="String">Row2 Col1Row2 Col2</Data>
</Cell>
</Row>
результат я ожидаю:
<Row>
<Cell Index="1" StyleID="s1">
<Data Type="String">Row1 Col1</Data>
</Cell>
<Cell Index="2" StyleID="s2">
<Data Type="String">Row1 Col2</Data>
</Cell>
</Row>
<Row>
<Cell Index="1" StyleID="s1">
<Data Type="String">Row2 Col1</Data>
</Cell>
<Cell Index="2" StyleID="s2">
<Data Type="String">Row2 Col2</Data>
</Cell>
</Row>
Любая помощь будет оценена.
Большое спасибо JamieD77! Это сработало для меня !!. Теперь я должен применить его на столе с 24 столбцами. Это будет заявление «UNION ALL festival»: - / –