gpt4 book ai didi

sql - SQL for XML Path使用节点名称和嵌套的数据值

转载 作者:行者123 更新时间:2023-12-03 16:50:45 24 4
gpt4 key购买 nike

我有以下格式的表数据:

category  productkey productcode    productname  
membership 1 055385 Professional
membership 2 055575 Student
membership 3 055370 Retired
event 4 P055391 Annual Conference
event 5 PM2018 Monthly Meeting


Im希望实现以下XML格式,请注意数据中的第二级XML节点:

 <Products>
<Membership>
<Product>
<productcode>055385</productcode>
<productname>Professional<productname>
</Product>
<Product>
<productcode>055575</productcode>
<productname>Student<productname>
</Product>
<Product>
<productcode>055370</productcode>
<productname>Retired<productname>
</Product>
</Membership>
<Event>
<Product>
<P055391>055385</productcode>
<productname>Professional<productname>
</Product>
<Product>
<productcode>Annual Conference</productcode>
<productname>Monthly Meeting<productname>
</Product>
</Event>




我已经根据此SQL接近所需的格式:

 select CAST('<' + replace(b.category,' ','') + '>' +
CAST( (select productcode,
productname
from @table a
where a.productkey=b.productkey
for xml path ('Products'), TYPE) as varchar(max))
+ '</' + replace(b.category,' ','') +'>' as xml)
from @table b
for xml path (''), ROOT('Product')


当前,此SQL返回每个产品上的“类别”节点,而不是将产品分组到“类别”节点下:

 <Products>
<Membership>
<Product>
<productcode>055385</productcode>
<productname>Professional<productname>
</Product>
</Membership>
<Membership>
<Product>
<productcode>055575</productcode>
<productname>Student<productname>
</Product>
</Membership>
<Membership>
<Product>
<productcode>055370</productcode>
<productname>Retired<productname>
</Product>
</Membership>


任何帮助,将不胜感激。
谢谢

最佳答案

我认为这可能是您需要的:

 select CAST('<'+ a.Category +'>'
+ CAST((SELECT
ProductCode, ProductName
FROM Thing b
WHERE b.Category = a.Category
FOR XML path('Product'), type) as VARCHAR(MAX))
+ '</' + a.Category + '>' AS XML)
from Thing a
GROUP BY a.Category
ORDER BY a.Category DESC
for xml path(''), root('Products')


请注意, Thing是表名,您可能需要重新添加 REPLACE语法。我只是按提供的架构和数据进行操作。

关于sql - SQL for XML Path使用节点名称和嵌套的数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com