Bonjour

svp j ai un problème avec un fichier XML structuré comme suit 9plusieurs blocs avis)

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<avis>
    <numeroseao>167350</numeroseao>
    <numero>6501-07-0922</numero>
    <depenses>
      <depense>
        <datedepense>2018-10-22</datedepense>
        <datepublicationdepense>2019-05-31</datepublicationdepense>
        <montantdepense>233376.880000</montantdepense>
        <description>Dépassement relié à des variations de quantité et/ou des modifications au contrat de construction ou de services de nature technique</description>
        <nomcontractant>Gervais Dubé Inc</nomcontractant>
        <neqcontractant>1144441871</neqcontractant>
      </depense>
    </depenses>
  </avis>

donc un numeroseao, numero peuvent être associé a une ou plusieurs dépenses

en executer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
	 MY_XML.avis.query('numeroseao').value('.', 'integer') as numeroseao,
     MY_XML.avis.query('numero').value('.', 'varchar(50)') as numero,
 
	 Nodes.depense.query('datedepense').value('.', 'DATE') as datedepense,
     Nodes.depense.query('datepublicationdepense').value('.', 'DATE')as datepublicationdepense,
     Nodes.depense.query('montantdepense').value('.', 'decimal(18,6)')as montantdepense,
	 Nodes.depense.query('description').value('.', 'varchar(150)') as description, 
     Nodes.depense.query('nomcontractant').value('.', 'varchar(150)')as nomcontractant,
     Nodes.depense.query('neqcontractant').value('.', 'varchar(150)')as neqcontractant
 
FROM (SELECT CAST(MY_XML AS xml)
      FROM OPENROWSET(BULK 'C:\Users\Amal Ait Mehedine\Desktop\2019mai\Depenses_20190501_20190531.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML)
	CROSS APPLY MY_XML.nodes('avis') AS MY_XML(avis)
	CROSS APPLY MY_XML.nodes('avis/depenses/depense') AS Nodes(depense);
j ai un produit cartesion, comment l éviter svp ,

merci