【问题标题】:For XML in SQL Server - adding Child elements对于 SQL Server 中的 XML - 添加子元素
【发布时间】:2017-12-22 08:12:57
【问题描述】:

我有以下查询

返回此 XML 文件格式

我怎样才能得到这种格式?

请帮忙, 源代码

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;

【问题讨论】:

  • 复制/粘贴您的代码到您的问题中。请勿上传代码图片。我们不能对图片做任何事情。

标签: sql xml for-xml


【解决方案1】:

请使用实际的 RDBMS(产品和版本)进行标记。语法和图片指向SQL-Server...

请阅读How to ask a good SQL questionHow to create a MCVE

如果没有测试数据,我无法对此进行测试,但以下内容应该会有所帮助...

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;

AS [consumer-payment-imports] 会将整个内部节点包裹在另一个节点中。

第二个添加是另一个子选择,用于将您的客户参考添加到内部子选择中。如果这不是1:n,使用它可能就足够了

'SomeValue' AS [consumer-identifier/Something]

这将在嵌套元素中添加值 SomeValue...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2018-12-07
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多