开发者

SQL Server FOR XML AUTO help - ChildNode name

开发者 https://www.devze.com 2023-03-08 04:36 出处:网络
I have this query ;WITH history_cte AS ( SELECT ActivityId [id] , Added [activityDate] , [Year] [year] , Make [make]

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??

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号