2011-05-25 51 views
1

我有这个疑问SQL服务器 - 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')  

它产生[近]的XML我所需要的。该子节点被简单地命名为错误的。我尝试了很多次切换别名,并且无法为我的生活找出正确的方法。我得到这个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> 

如何纠正问题,使[活动]子节点正确命名。我觉得我很亲密。感谢您的帮助,提示或技巧。

干杯圣地亚哥,CK〜

回答

0

你能尝试一下本作最终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') 

我代替嵌套选择FOR XML AUTO, TYPEFOR XML PATH('Activity'), TYPE - 这是否你在寻找什么?

+0

感谢您的帮助。我能够得到它的工作。 〜CK – Hcabnettek 2011-06-08 22:23:01