【问题标题】:how to construct a proper nested XML in SQL Server如何在 SQL Server 中构造正确的嵌套 XML
【发布时间】:2020-03-02 13:40:59
【问题描述】:

我希望 DECLARATION 标签在 ENCOURS 之后和 TCN 之前关闭,请问如何做到这一点?

【问题讨论】:

标签: sql-server xml tsql


【解决方案1】:

我弯下腰为你(而不是你)输入了一个 DDL 和样本数据群。

SQL

-- DDL and sample data population, start
DECLARE @ENTETE TABLE (CIB_DECLARANT INT, Type_Fischier VARCHAR(30), numero_de_remise INT, date_declaration DATE);
INSERT INTO @ENTETE (CIB_DECLARANT, Type_Fischier, numero_de_remise, date_declaration) 
VALUES (10057, 'DECLARATION_TCN', 1, '2019-12-03');

DECLARE @DECLARATION TABLE (siren_emetteur INT);
INSERT INTO @DECLARATION (siren_emetteur) 
VALUES (12345);

DECLARE @CARATERISTIQUE_TITRE TABLE (type_mouvement CHAR(1), code_isin VARCHAR(30));
INSERT INTO @CARATERISTIQUE_TITRE (type_mouvement, code_isin)
VALUES ('C', 'fr12345');

DECLARE @MOUVEMENT_TITRE TABLE (type_mouvement CHAR(1), code_isin VARCHAR(30));
INSERT INTO @MOUVEMENT_TITRE (type_mouvement, code_isin)
VALUES ('C', 'fr400016');

DECLARE @ENCOURS TABLE (code_devise CHAR(3), montant_encours INT);
INSERT INTO @ENCOURS (code_devise, montant_encours)
VALUES ('EUR', 0);
-- DDL and sample data population, end

SELECT
(
    SELECT *
    FROM @ENTETE
    FOR XML PATH('ENTETE'), TYPE
    )
    , (
    SELECT *
        , (
        SELECT *
        FROM @CARATERISTIQUE_TITRE
        FOR XML PATH('CARATERISTIQUE_TITRE'), TYPE
        )
        , (
        SELECT *
        FROM @MOUVEMENT_TITRE
        FOR XML PATH('MOUVEMENT_TITRE'), TYPE
        )
        , (
        SELECT *
        FROM @ENCOURS
        FOR XML PATH('ENCOURS'), TYPE
        )
    FROM @DECLARATION
    FOR XML PATH('DECLARATION'), TYPE
)
FOR XML PATH(''), TYPE, ROOT('TCN');

输出

<TCN>
  <ENTETE>
    <CIB_DECLARANT>10057</CIB_DECLARANT>
    <Type_Fischier>DECLARATION_TCN</Type_Fischier>
    <numero_de_remise>1</numero_de_remise>
    <date_declaration>2019-12-03</date_declaration>
  </ENTETE>
  <DECLARATION>
    <siren_emetteur>12345</siren_emetteur>
    <CARATERISTIQUE_TITRE>
      <type_mouvement>C</type_mouvement>
      <code_isin>fr12345</code_isin>
    </CARATERISTIQUE_TITRE>
    <MOUVEMENT_TITRE>
      <type_mouvement>C</type_mouvement>
      <code_isin>fr400016</code_isin>
    </MOUVEMENT_TITRE>
    <ENCOURS>
      <code_devise>EUR</code_devise>
      <montant_encours>0</montant_encours>
    </ENCOURS>
  </DECLARATION>
</TCN>

【讨论】:

    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多