load child node XML SQL server
Bonjour
svp j ai un problème avec un fichier XML structuré comme suit 9plusieurs blocs avis)
Code:
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:
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