【发布时间】:2020-08-04 10:25:01
【问题描述】:
非常感谢您的帮助。我正在使用 SQL FOR XML PATH,但节点有一些问题。
我有一个简单的表格(下面是生成的脚本)
voucher_number payment_number payment_date
---------------------------------------------------
D15 C15 2020-07-27
D16 C16 2020-07-25
我希望 XML 看起来像这样,看“对象”的级别:
<?xml version="1.0" encoding="UTF-8"?>
<objects>
<object>
<record>
<voucher_number>D15</voucher_number>
<payment_number>C15</payment_number>
<payment_date>2020-07-27</payment_date>
</record>
<record>
<voucher_number>D16</voucher_number>
<payment_number>C16</payment_number>
<payment_date>2020-07-25</payment_date>
</record>
</object>
</objects>
但是当我运行这个脚本时
SELECT
[voucher_number] as [record/voucher_number]
,[payment_number] as [record/payment_number]
,[payment_date] as [record/payment_date]
FROM #t1
FOR XML PATH ('object'), ROOT('Objects')
看起来是这样的……看看“对象”的层次。
<?xml version="1.0" encoding="UTF-8"?>
<Objects>
<object>
<record>
<voucher_number>D15</voucher_number>
<payment_number>C15</payment_number>
<payment_date>2020-07-27</payment_date>
</record>
</object>
<object>
<record>
<voucher_number>D16</voucher_number>
<payment_number>C16</payment_number>
<payment_date>2020-07-25</payment_date>
</record>
</object>
</Objects>
我应该如何更改脚本以跨越两个“记录”子节点?
非常感谢提前:)
--- Script to generate the test table ---
Create table #t1
(
[voucher_number] [nvarchar](50) NULL,
[payment_number] [nvarchar](50) NULL,
[payment_date] [date] NULL
)
INSERT #t1 ([voucher_number], [payment_number], [payment_date]) VALUES (N'D15', N'C15', CAST(N'2020-07-27' AS Date))
GO
INSERT #t1 ([voucher_number], [payment_number], [payment_date]) VALUES (N'D16', N'C16', CAST(N'2020-07-25' AS Date))
【问题讨论】:
-
XML 支持高度特定于供应商 - 所以请添加一个标签来指定您是否使用
mysql、postgresql、sql-server、oracle或db2- 或完全不同的东西。
标签: sql sql-server xml