Ich versuche, SQL zu schreiben, um eine XML-Zeichenfolge mit untergeordneten Elementen zu generieren. Ich kann alles bekommen, aber die Kinder fallen nicht als Kinder, sie zeigen sich als separate Gegenstände auf der Wurzelebene. Ich habe mit der XML-Pfadangabe herumgespielt, aber ich habe einfach kein Glück.Schreiben von SQL zum Entwickeln von XML mit Kindern
Hilfe wäre willkommen. Ich bin auf einem SQL 2014-Server.
declare @xmldata xml
set @xmldata = ( SELECT adr.ACCOUNT_IDENTIFIER
, adr.FIRST_NAME
, adr.LAST_NAME
, adr.ADDR_LINE1
, adr.ADDR_LINE2
, adr.CITY
, adr.STATE
, adr.ZIP
, (SELECT ACCT_NBR
, LOAN_ORGL_PRIN_AMT
, LOAN_OSTD_PRIN_AMT
, LOAN_EFTV_INT_RT
FROM Staging.StatementOfBalance_SRC sob
WHERE sob.ACCT_NBR = crbr.ACCT_NBR
FOR XML path('accounts'), TYPE, elements)
from Staging.Account_Data crbr
join Unit_Cost.ADDRESSES_ALL adr on crbr.ACCOUNT_IDENTIFIER = adr.ACCOUNT_IDENTIFIER
FOR XML path('letter'), root ('statement'), elements )
SELECT @xmldata as returnXML
Meine Ergebnisse sind
<statement>
<letter>
<ACCOUNT_IDENTIFIER>123321</ACCOUNT_IDENTIFIER>
<FIRST_NAME>Pippi</FIRST_NAME>
<LAST_NAME>Longstockings</LAST_NAME>
<ADDR_LINE1>123 Out Onna Boat</ADDR_LINE1>
<ADDR_LINE2 />
<CITY>Ocean</CITY>
<STATE>ME</STATE>
<ZIP>000000</ZIP>
<accounts>
<ACCT_NBR>0000000000000000</ACCT_NBR>
<LOAN_ORGL_PRIN_AMT>2670.00</LOAN_ORGL_PRIN_AMT>
<LOAN_OSTD_PRIN_AMT>2749.09</LOAN_OSTD_PRIN_AMT>
<LOAN_EFTV_INT_RT>4.75000</LOAN_EFTV_INT_RT>
</accounts>
</letter>
<letter>
<ACCOUNT_IDENTIFIER>123321</ACCOUNT_IDENTIFIER>
<FIRST_NAME>Pippi</FIRST_NAME>
<LAST_NAME>Longstockings</LAST_NAME>
<ADDR_LINE1>123 Out Onna Boat</ADDR_LINE1>
<ADDR_LINE2 />
<CITY>Ocean</CITY>
<STATE>ME</STATE>
<ZIP>000000</ZIP>
<accounts>
<ACCT_NBR>0000000000000000</ACCT_NBR>
<LOAN_ORGL_PRIN_AMT>4082.00</LOAN_ORGL_PRIN_AMT>
<LOAN_OSTD_PRIN_AMT>5520.21</LOAN_OSTD_PRIN_AMT>
<LOAN_EFTV_INT_RT>5.50000</LOAN_EFTV_INT_RT>
</accounts>
</letter>
</statement>
aber, was ich brauche ist:
<statement>
<letter>
<ACCOUNT_IDENTIFIER>123321</ACCOUNT_IDENTIFIER>
<FIRST_NAME>Pippi</FIRST_NAME>
<LAST_NAME>Longstockings</LAST_NAME>
<ADDR_LINE1>123 Out Onna Boat</ADDR_LINE1>
<ADDR_LINE2 />
<CITY>Ocean</CITY>
<STATE>ME</STATE>
<ZIP>000000</ZIP>
<accounts>
<ACCT_NBR>0000000000000000</ACCT_NBR>
<LOAN_ORGL_PRIN_AMT>2670.00</LOAN_ORGL_PRIN_AMT>
<LOAN_OSTD_PRIN_AMT>2749.09</LOAN_OSTD_PRIN_AMT>
<LOAN_EFTV_INT_RT>4.75000</LOAN_EFTV_INT_RT>
</accounts>
<accounts>
<ACCT_NBR>0000000000000000</ACCT_NBR>
<LOAN_ORGL_PRIN_AMT>4082.00</LOAN_ORGL_PRIN_AMT>
<LOAN_OSTD_PRIN_AMT>5520.21</LOAN_OSTD_PRIN_AMT>
<LOAN_EFTV_INT_RT>5.50000</LOAN_EFTV_INT_RT>
</accounts>
</letter>
</statement>
Danke Shnugo! Ich hatte die WHERE im Inneren wählen Sie mit den Kontonummern, und nicht die Kontokennung. Matching Ihre Änderung hat es funktioniert. Glücklicher Montag :) – tracer
WOOT! Ja, ich wollte sagen ... Ich bin nicht am magischen Ort ... habe UP gewählt! – tracer