【问题标题】:How to structure this XML in SQL Server?如何在 SQL Server 中构造这个 XML?
【发布时间】:2018-04-20 19:40:57
【问题描述】:

我使用以下 SQL 创建了一些临时表,然后使用这些临时表来生成 XML。我能够生成一个 XML,但我无法按照我想要的方式构建这个东西。

我想打开IndirectSalesMessage标签,然后打开Header标签,然后关闭<Header>标签,然后打开DIST标签,然后关闭DIST标签,最后关闭@987654326 @ 标签。

这是我现在在 SQL 中的代码及其作用。生成的 XML 在“我生成的 XML”下方。我实际想要生成的 XML 低于“我想要生成的 XML”。

-- Creation of #XML HEADER  
SELECT DISTINCT 
    [targetapplication], 
    [originatingapplication], 
    [interfacename], 
    '7320177' E1_num 
INTO
    #xml_header 
FROM   
    [CP].[dbo].[xmlforload] 

-- Creation of #DIST2 
SELECT 
    distributor_e1number, 
    debit_memo_number 
INTO
    #dist2 
FROM   
    #xml_dist 
WHERE  
    distributor_e1number = '7320177' 
    AND debit_memo_number = 'June20177320177' 

-- Creation of #XML
SELECT
    Header.[targetapplication], 
    Header.[interfacename], 
    Header.[originatingapplication], 
    DIST.distributor_e1number, 
    DIST.debit_memo_number 
FROM
    #xml_header Header 
INNER JOIN 
    #dist2 DIST ON header.e1_num = dist.distributor_e1number 
FOR XML PATH('Header'), ROOT('IndirectSalesMessage'), ELEMENTS

当前生成的 XML

<IndirectSalesMessage>
   <Header>
      <TargetApplication>EnterpriseOne 9.1</TargetApplication>
      <InterfaceName>CA_Tracing</InterfaceName>
      <OriginatingApplication>Alliance-Model N</OriginatingApplication>
      <distributor_e1number>7320177</distributor_e1number>
      <debit_memo_number>June20177320177</debit_memo_number>
   </Header>
</IndirectSalesMessage>

想要生成的 XML

<IndirectSalesMessage>
   <Header>
      <TargetApplication>EnterpriseOne 9.1</TargetApplication>
      <InterfaceName>CA_Tracing</InterfaceName>
      <OriginatingApplication>Alliance-Model N</OriginatingApplication>
   </Header>
   <DIST>
      <distributor_e1number>7320177</distributor_e1number>
      <debit_memo_number>June20177320177</debit_memo_number>
   </DIST>
</IndirectSalesMessage>

【问题讨论】:

    标签: sql xml sql-server-2012 tags


    【解决方案1】:

    创建 XML

    SELECT 
    Header.targetapplicatioAS 'Header/Targetapplication', 
    Header.interfacename AS 'Header/Interfacename', 
    Header.originatingapplication AS 'Header/Originatingapplication',
    DIST.distributor_e1number AS 'DIST/distributor_e1number',
    DIST.debit_memo_number AS 'DIST/debit_memo_number'
    FROM #xml_header Header 
    INNER JOIN #dist2 DIST ON 
    header.e1_num = dist.distributor_e1number 
    FOR XML PATH('IndirectSalesMessage')
    

    【讨论】:

    • Pintu,我接受了你的答案。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多