SQL Server 2005 pour XML explicite - Besoin d'aide pour le formatage

Translate

J'ai une table avec une structure comme la suivante:

------------------------------
LocationID     | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321

Pour passer à une autre procédure stockée, j'ai besoin que le XML ressemble à ceci:

<root> 
    <clientID>12345</clientID>
    <clientID>54321</clientID>
</root>

Le mieux que j'ai pu faire jusqu'à présent a été de l'obtenir comme ceci:

<root clientID="10705"/>

J'utilise cette instruction SQL:

SELECT
    1 as tag,
    null as parent,
    AccountNumber as 'root!1!clientID'
FROM
    Location.LocationMDAccount
WHERE
    locationid = 'long-guid-here'
FOR XML EXPLICIT

Jusqu'à présent, j'ai regardé la documentation surla page MSDN, mais je n'ai pas obtenu les résultats escomptés.


@KG,

Le vôtre m'a donné cette sortie en fait:

<root>
  <Location.LocationMDAccount>
    <clientId>10705</clientId>
  </Location.LocationMDAccount>
</root>

Je vais m'en tenir à laFOR XML EXPLICITde Chris Leon pour l'instant.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

essayer

SELECT
    1 AS Tag,
    0 AS Parent,
    AccountNumber AS [Root!1!AccountNumber!element]
FROM
    Location.LocationMDAccount
WHERE
    LocationID = 'long-guid-here'
FOR XML EXPLICIT
La source
Translate

Essayez ceci, Chris:

SELECT
    AccountNumber as [clientId]
FROM
    Location.Location root
WHERE
    LocationId = 'long-guid-here'
FOR
    XML AUTO, ELEMENTS

TERRIBLEMENT DÉSOLÉ! J'ai confondu ce que vous demandiez. Je préfère le XML AUTO juste pour la facilité de maintenance, mais je pense que l'un ou l'autre est efficace. Mes excuses pour la négligence ;-)

La source
Translate

En utilisant SQL Server 2005 (ou vraisemblablement 2008), je trouve que XML PATH permet beaucoup plus de maintenance de SQL que de XML Explicit (en particulier lorsque le SQL est plus long).

Dans ce cas:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
La source
Translate

Je l'ai avec:

select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
La source
Translate
SELECT 1             as tag,
       null          as parent,
       AccountNumber as 'clientID!1!!element'
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML EXPLICIT, root('root')
La source