如何解决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
-这样做能满足您的需求吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。