SQL Server FOR XML AUTO帮助-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>
我该如何纠正问题,以便正确地命名[Activity]子节点。我觉得我已经很近了。感谢您的帮助,提示或技巧。 在圣地亚哥欢呼,〜ck     

解决方法

您能为期末的ѭ2尝试吗?
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\')  
我将嵌套选择中的ѭ4替换为
FOR XML PATH(\'Activity\'),TYPE
-这样做能满足您的需求吗?