2011-05-25 1 views
1

J'ai cette requêteSQL Server FOR XML AUTO Aide - Nom childNode

;WITH history_cte AS 
(
    SELECT 
    ActivityId [id] 
    , Added [activityDate] 
    , [Year] [year] 
    , Make [make] 
    , Model [model] 
    , Engine [engine] 
    , MricId [mricId] 
    , Display [activityDescription] 
    , [Header] [header] 
    , [VehicleText] [vehicleDescription] 
    , ob = CONVERT(VARCHAR(10), Added, 121) 
    FROM @top20Activities Activities   
) 
, historyDistinct_cte AS (SELECT DISTINCT [header], ob FROM history_cte) 

SELECT 
    Activities.[header] 
    , (
     SELECT 
      id 
      , activityDate 
      , [year] 
      , make 
      , model 
      , engine 
      , mricId 
      , activityDescription 
      , vehicleDescription 
     FROM history_cte Activity 
     WHERE [header] = Activities.[header] 
     ORDER BY ob DESC 
     FOR XML AUTO, TYPE 
    ) 
FROM historyDistinct_cte Activities 
ORDER BY Activities.ob DESC 
FOR XML AUTO, TYPE, ROOT ('ActivityHistory')  

Il génère [presque] XML j'ai besoin. Le noeud enfant est simplement nommé incorrect. J'ai essayé de changer d'alias tellement de fois et ne peux pas pour la vie de moi comprendre la bonne façon. Je reçois ce code XML

<ActivityHistory> 
    <Activities header="Today - Wednesday, May 25, 2011"> 
    <Activities id="100000" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Maintenance: 0 Miles" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100001" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Maintenance: 44,000 Miles" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100002" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0300" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100003" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0301" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100004" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0311" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100005" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0321" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100006" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0331" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100007" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0341" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100008" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0351" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100009" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0361" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    <Activities id="100010" activityDate="2011-05-25T00:00:00" year="2011" make="Ford" model="Fusion Hybrid" engine="2.5 L" mricId="1" activityDescription="Diagnostics: P0371" vehicleDescription="2011 Ford Fusion Hybrid 2.5 L" /> 
    </Activities> 
    <Activities header="Tuesday, May 24, 2011"> 
    <Activities id="100011" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Maintenance: 0 Miles" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100012" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Maintenance: 82,000 Miles" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100013" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Repair: Radiator" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100014" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Repair: Cooling Fan Motor" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100015" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Repair: Ignition Control" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100016" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Repair: Spark Plug Advance" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100017" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Repair: Seat Motor" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
    <Activities id="100018" activityDate="2011-05-24T00:00:00" year="2008" make="Mitchell" model="Cooper" engine="1.6 L" mricId="1" activityDescription="Diagnostics: P112" vehicleDescription="2008 Mitchell Cooper 1.6 L" /> 
</Activities> 
    <Activities header="Sunday, May 22, 2011"> 
    <Activities id="100019" activityDate="2011-05-22T00:00:00" year="2007" make="Chevrolet" model="Camaro" engine="400cc" mricId="1" activityDescription="Maintenance: 0 Miles" vehicleDescription="2007 Chevrolet Camaro 400cc" /> 
    </Activities> 
</ActivityHistory> 

Comment corriger le problème afin que les nœuds enfants [Activity] soient nommés correctement. Je sens que je suis assez proche. Merci pour toute aide, conseils ou astuces.

Vive à San Diego, ~ ck

Répondre

0

Pouvez-vous essayer pour votre SELECT finale?

SELECT 
    Activities.[header], 
    (SELECT 
      id 
      , activityDate 
      , [year] 
      , make 
      , model 
      , engine 
      , mricId 
      , activityDescription 
      , vehicleDescription 
    FROM history_cte Activity 
    WHERE [header] = Activities.[header] 
    ORDER BY ob DESC 
    FOR XML PATH('Activity'), TYPE 
    ) 
FROM historyDistinct_cte Activities 
ORDER BY Activities.ob DESC 
FOR XML AUTO, TYPE, ROOT ('ActivityHistory') 

J'ai remplacé le FOR XML AUTO, TYPE dans la sélection imbriquée avec un FOR XML PATH('Activity'), TYPE - ce que faire ce que vous cherchez ??

+0

Merci pour l'aide. J'ai réussi à le faire fonctionner. ~ ck – Hcabnettek