我具有以下格式的表数据:
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>
任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
您需要有2个嵌套的XML查询:一个用于else if (answers[x] != 'X')
{
score = score - 4;
}
记录,一个用于membership
记录。像这样:
event
答案 1 :(得分:0)
我认为这可能是您需要的:
$var
请注意, 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
语法。我只是按提供的架构和数据进行操作。