Вы можете сделать это довольно легко с помощью CTE (Common Table Expression) - что-то вроде этого (при условии, что наши данные XML хранятся в переменной @XmlData XML
):
-- define the CTE to extract the individual Credit and Debit values
;WITH RawXmlData (Credit, Debit) AS
(
SELECT
Credit = ISNULL(XC.value('(Credit)[1]', 'decimal(16,4)'), 0.0),
Debit = ISNULL(XC.value('(Debit)[1]', 'decimal(16,4)'), 0.0)
FROM
@XmlData.nodes('/AccountingDetail/DetailItems/AccountingDetailItem') XT(XC)
)
-- now select from that CTE and sum up the values
SELECT
SumCredit = SUM(Credit),
SumDebit = SUM(Debit)
FROM
RawXmlData