Bonjour,

Je dispose d'un document XML donc voici la structure :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<A>
  <B>
	<C>
      <D>
        <E>1509</E>
        <F>266400</F>
        <G>
          <H>
            <I>7</I>
            <J>0</J>
          </H>
          <H>
            <I>8</I>
            <J>0</J>
          </H>
        </G>
      </D>
      <D>
        <E>1509</E>
        <F>280800</F>
        <G>
          <H>
            <I>1</I>
            <J>0</J>
          </H>
          <H>
            <E>3</E>
            <F>0</F>
          </H>
	    </G>
	  </D>
	</C>
  </B>
</A>
La requête que je dois écrire doit me procurer le résultat suivant :

E F I J
----------- -----------
1509 266400 7 0
1509 266400 8 0
1509 280800 1 0
1509 280800 3 0
Mais avec la requête suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT D.value('./E[1]', 'INT') E,
		D.value('./F[1]', 'INT') F,
		D.query('./G/H/I').value('.', 'INT') I,
		D.query('./G/H/J').value('.', 'INT') J
FROM @xml.nodes('/A/B/C/D') Nodes(D)
je ne parviens qu'à obtenir :

E F I J
----------- ----------- ----------- -----------
1509 266400 78 0
1509 280800 13 0
Parce qu'on ne peut pas utiliser la méthode nodes ailleurs que dans la clause FROM.

Pourriez-vous m'indiquer la bonne requête à écrire, sans boucle WHILE ni curseur ?

@++