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
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="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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在最终的SELECT 中尝试一下吗?
我将嵌套选择中的
FOR XML AUTO, TYPE
替换为FOR XML PATH('Activity'), TYPE
- 这是否符合您的要求?Can you try this for your final
SELECT
?I replaced the
FOR XML AUTO, TYPE
in the nested select with aFOR XML PATH('Activity'), TYPE
- does that do what you're looking for??