SQL Server FOR XML在生成同名节点时出现显式错误
我正在尝试使用for XML Explicit生成以下XML结构SQL Server FOR XML在生成同名节点时出现显式错误,sql,sql-server,tsql,for-xml-explicit,Sql,Sql Server,Tsql,For Xml Explicit,我正在尝试使用for XML Explicit生成以下XML结构 <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <Worksheet ss:Name="1"> <Table> <Row> <Cell>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<Worksheet ss:Name="1">
<Table>
<Row>
<Cell>
<Data ss:Type="String">231548</Data>
</Cell>
<Cell>
<Data ss:Type="String">2014-11-03T20:03:30</Data>
</Cell>
</Row>
</Table>
</Worksheet>
谁能帮帮我吗。
任何帮助都将不胜感激。
我正在使用此代码生成一个可以在excel中打开的xml。假设您确实希望使用xml Explicit生成此输出,您可以为单元格和数据添加两个额外的标记以及两个后续的Union查询 编辑:我在工作表中添加了1!2.ss:标记2的Name列,以确保输出符合您的要求
SELECT
Tag,
Parent,
[Workbook!1!xmlns],
[Workbook!1!xmlns:ss],
[Worksheet!2!ss:Name],
[Table!3!],
[Row!4!],
[Cell!5!],
[Data!6!ss:Type],
[Data!6!],
[Cell!7!],
[Data!8!ss:Type],
[Data!8!]
FROM
(
SELECT top 5
1 AS Tag,
0 AS Parent,
0 as SORT,
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns],
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
UNION ALL
SELECT top 5
2 AS Tag,
1 AS Parent,
AuditID * 100 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
1 AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
3 AS Tag,
2 AS Parent,
AuditID * 100+1 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
4 AS Tag,
3 AS Parent,
AuditID * 100+2 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
5 AS Tag,
4 AS Parent,
AuditID * 100 + 3 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
6 AS Tag,
5 AS Parent,
AuditID * 100 + 4 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
'String' AS [Data!6!ss:Type],
AuditID AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM
TempAudits
UNION ALL
SELECT top 5
7 AS Tag,
4 AS Parent,
AuditID * 100 + 5 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
8 AS Tag,
7 AS Parent,
AuditID * 100 + 6 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
'String' AS [Data!8!ss:Type],
AuditDate AS [Data!8!]
FROM
TempAudits
) Aa
Order by Sort
FOR XML EXPLICIT
假设您确实希望使用XML Explicit生成此输出,您可以为单元格和数据添加两个以上的标记以及两个后续的Union查询 编辑:我在工作表中添加了1!2.ss:标记2的Name列,以确保输出符合您的要求
SELECT
Tag,
Parent,
[Workbook!1!xmlns],
[Workbook!1!xmlns:ss],
[Worksheet!2!ss:Name],
[Table!3!],
[Row!4!],
[Cell!5!],
[Data!6!ss:Type],
[Data!6!],
[Cell!7!],
[Data!8!ss:Type],
[Data!8!]
FROM
(
SELECT top 5
1 AS Tag,
0 AS Parent,
0 as SORT,
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns],
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
UNION ALL
SELECT top 5
2 AS Tag,
1 AS Parent,
AuditID * 100 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
1 AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
3 AS Tag,
2 AS Parent,
AuditID * 100+1 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
4 AS Tag,
3 AS Parent,
AuditID * 100+2 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
5 AS Tag,
4 AS Parent,
AuditID * 100 + 3 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
6 AS Tag,
5 AS Parent,
AuditID * 100 + 4 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
'String' AS [Data!6!ss:Type],
AuditID AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM
TempAudits
UNION ALL
SELECT top 5
7 AS Tag,
4 AS Parent,
AuditID * 100 + 5 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
8 AS Tag,
7 AS Parent,
AuditID * 100 + 6 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
'String' AS [Data!8!ss:Type],
AuditDate AS [Data!8!]
FROM
TempAudits
) Aa
Order by Sort
FOR XML EXPLICIT
看看哪种模式通常比显式模式简单得多,并且可以做任何事情,too@marc_s谢谢你的建议。我也在尝试。你能帮我回答上面的问题吗?@marc_s你能帮我用for XML path生成相同的XML吗。如果你能提供一个表结构和一些示例数据-是,possibly@marc_s谢谢你抽出时间帮我。我已经在[link]中创建了表和示例项,我正在尝试的XML结构我已经将其粘贴到了[link]中。看看它通常比显式模式简单得多,并且可以做任何事情,too@marc_s谢谢你的建议。我也在尝试。你能帮我回答上面的问题吗?@marc_s你能帮我用for XML path生成相同的XML吗。如果你能提供一个表结构和一些示例数据-是,possibly@marc_s谢谢你抽出时间帮我。我已经在[link]创建了表和示例条目,我正在尝试的XML结构我已经将它粘贴到了这里[link]。
SELECT
Tag,
Parent,
[Workbook!1!xmlns],
[Workbook!1!xmlns:ss],
[Worksheet!2!ss:Name],
[Table!3!],
[Row!4!],
[Cell!5!],
[Data!6!ss:Type],
[Data!6!],
[Cell!7!],
[Data!8!ss:Type],
[Data!8!]
FROM
(
SELECT top 5
1 AS Tag,
0 AS Parent,
0 as SORT,
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns],
'urn:schemas-microsoft-com:office:spreadsheet' AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
UNION ALL
SELECT top 5
2 AS Tag,
1 AS Parent,
AuditID * 100 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
1 AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
3 AS Tag,
2 AS Parent,
AuditID * 100+1 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
4 AS Tag,
3 AS Parent,
AuditID * 100+2 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
From TempAudits
UNION ALL
SELECT top 5
5 AS Tag,
4 AS Parent,
AuditID * 100 + 3 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
6 AS Tag,
5 AS Parent,
AuditID * 100 + 4 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
'String' AS [Data!6!ss:Type],
AuditID AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM
TempAudits
UNION ALL
SELECT top 5
7 AS Tag,
4 AS Parent,
AuditID * 100 + 5 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
NULL AS [Data!8!ss:Type],
NULL AS [Data!8!]
FROM TempAudits
UNION ALL
SELECT top 5
8 AS Tag,
7 AS Parent,
AuditID * 100 + 6 as SORT,
NULL AS [Workbook!1!xmlns],
NULL AS [Workbook!1!xmlns:ss],
NULL AS [Worksheet!2!ss:Name],
NULL AS [Table!3!],
NULL AS [Row!4!],
NULL AS [Cell!5!],
NULL AS [Data!6!ss:Type],
NULL AS [Data!6!],
NULL AS [Cell!7!],
'String' AS [Data!8!ss:Type],
AuditDate AS [Data!8!]
FROM
TempAudits
) Aa
Order by Sort
FOR XML EXPLICIT