SQL Server FOR XML AUTO help - ChildNode name
I have this query
;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')
It generates [Almost] the XML I need. The child node is simply named wrong. I've tried switching aliases so many times and cannot for the life of me figure out the correct way. I'm getting this 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=开发者_如何学Python"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>
How do I correct the problem so the [Activity] child nodes are named correctly. I feel I'm quite close. Thanks for any help, tips, or tricks.
Cheers in San Diego, ~ck
Can you try this for your final SELECT
?
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')
I replaced the FOR XML AUTO, TYPE
in the nested select with a FOR XML PATH('Activity'), TYPE
- does that do what you're looking for??
精彩评论