I have this following query
Returns this XML File Format
How Can I get it in this format?
Please Help, source Code
SELECT top 1
(SELECT top 1
count(*)AS 'number-of-accounts',
sum(br.cnsmr_accnt_bckt_crrnt_bal_amnt) AS 'total-value-of-account-payment',
'' AS 'date-of-turnover',
'' AS 'is-conversion-job'
FROM
cnsmr as c
inner join cnsmr_accnt as ca ON c.cnsmr_id = ca.cnsmr_id
inner join cnsmr_accnt_bckt_bal_rprtng as br on ca.cnsmr_accnt_id = br.cnsmr_accnt_id
FOR XML PATH('payment-import-header'), TYPE),
(SELECT top 1
br.cnsmr_accnt_bckt_crrnt_bal_amnt AS 'payment-amount',
'' AS 'bucket-transaction-type',
'' AS 'tendered-date',
'' AS 'entered-date',
'' AS 'payment-location-code',
'' AS 'payment-memo-code',
'' AS 'payment-comments',
'' AS 'external-reference-identifier'
FROM
cnsmr as c
inner join cnsmr_accnt as ca ON c.cnsmr_id = ca.cnsmr_id
inner join cnsmr_accnt_bckt_bal_rprtng as br on ca.cnsmr_accnt_id = br.cnsmr_accnt_id
FOR XML PATH('consumer-payment'), ROOT('consumer-payment-import'),TYPE)
FOR XML RAW (''), ROOT ('consumer-payment-import-job'), ELEMENTS XSINIL;
Please tag with the actual RDBMS (product and version). Syntax and pictures point to SQL-Server...
Please read How to ask a good SQL question and How to create a MCVE
Without test data I cannot test this, but the following should help...
SELECT top 1
(SELECT top 1
count(*)AS 'number-of-accounts',
sum(br.cnsmr_accnt_bckt_crrnt_bal_amnt) AS 'total-value-of-account-payment',
'' AS 'date-of-turnover',
'' AS 'is-conversion-job'
FROM
cnsmr as c
inner join cnsmr_accnt as ca ON c.cnsmr_id = ca.cnsmr_id
inner join cnsmr_accnt_bckt_bal_rprtng as br on ca.cnsmr_accnt_id = br.cnsmr_accnt_id
FOR XML PATH('payment-import-header'), TYPE),
(SELECT top 1
br.cnsmr_accnt_bckt_crrnt_bal_amnt AS 'payment-amount',
'' AS 'bucket-transaction-type',
'' AS 'tendered-date',
'' AS 'entered-date',
'' AS 'payment-location-code',
'' AS 'payment-memo-code',
'' AS 'payment-comments',
'' AS 'external-reference-identifier'
,(
SELECT 'SomeValue' AS Something
FOR XML PATH('consumer-identifier'),TYPE
)
FROM
cnsmr as c
inner join cnsmr_accnt as ca ON c.cnsmr_id = ca.cnsmr_id
inner join cnsmr_accnt_bckt_bal_rprtng as br on ca.cnsmr_accnt_id = br.cnsmr_accnt_id
FOR XML PATH('consumer-payment'), ROOT('consumer-payment-import'),TYPE) AS [consumer-payment-imports]
FOR XML RAW (''), ROOT ('consumer-payment-import-job'), ELEMENTS XSINIL;
The AS [consumer-payment-imports]
will wrap the whole inner node within one more node.
The second addition is one more sub-select to add your customer-reference into the inner sub-select. If this is not 1:n
it might be enough to use
'SomeValue' AS [consumer-identifier/Something]
This will add the value SomeValue
within a nested element...