【发布时间】:2020-03-29 14:04:46
【问题描述】:
我们有这个代码:
SELECT
(SELECT
'infor' AS [Process/TenantID],
(SELECT
ROW_NUMBER() OVER(ORDER BY gld_serial_no ASC) as [@sequence],
(SELECT TOP (1)
'1' AS [DimensionCode/@sequence],
gld_dim1 AS [DimensionCode]
FROM
slr_gl_dta_paid
GROUP BY
gld_dim1
FOR XML PATH ('DimensionCode'), TYPE) AS [DimensionCodes]
FROM
slr_gl_dta_paid
FOR XML PATH ('JournalEntryLine'), TYPE) AS [SourceSystemJournalEntry]
FOR XML PATH ('DataArea'), type
)
FOR XML PATH (''), ROOT('ProcessSourceSystemJournalEntry')
结果是这样的:
<ProcessSourceSystemJournalEntry>
<DataArea>
<Process>
<TenantID>infor</TenantID>
</Process>
<SourceSystemJournalEntry>
<JournalEntryLine sequence="1">
<DimensionCodes>
<DimensionCode>
<DimensionCode sequence="1">CD53</DimensionCode>
</DimensionCode>
</DimensionCodes>
</JournalEntryLine>
<JournalEntryLine sequence="2">
<DimensionCodes>
<DimensionCode>
<DimensionCode sequence="1">CD99</DimensionCode>
</DimensionCode>
</DimensionCodes>
</JournalEntryLine>
</SourceSystemJournalEntry>
</DataArea>
</ProcessSourceSystemJournalEntry>
但是我们需要这样的结果:
<ProcessSourceSystemJournalEntry>
<DataArea>
<Process>
<TenantID>infor</TenantID>
</Process>
<SourceSystemJournalEntry>
<JournalEntryLine sequence="1">
<DimensionCodes>
<DimensionCode sequence="1">CD53</DimensionCode>
</DimensionCodes>
</JournalEntryLine>
<JournalEntryLine sequence="2">
<DimensionCodes>
<DimensionCode sequence="1">CD99</DimensionCode>
</DimensionCodes>
</JournalEntryLine>
</SourceSystemJournalEntry>
</DataArea>
</ProcessSourceSystemJournalEntry>
如何做到这一点?
【问题讨论】:
标签: sql sql-server xml xpath