我有一个表需要转换为XML,但是使用相同的XML元素名称会整合尝试使用它的每一列的字符串。
SELECT
SKU [SKU]
, title [Title]
, URL [URL]
, promotionsURL1 [PROMOTIONS/URL]
, promotionsURL2 [PROMOTIONS/URL]
, promotionsURL3 [PROMOTIONS/URL]
, promotionsURL4 [PROMOTIONS/URL]
, promotionsURL5 [PROMOTIONS/URL]
, promotionsURL6 [PROMOTIONS/URL]
FROM tblSLIRecommendations
FOR XML PATH('SKU_TO_TUNE'), ROOT('RECOMMENDATION_TUNINGS')
这给了我XML结果
<SKU_TO_TUNE>
<SKU>VS4111-546U135-U135</SKU>
<Title>Twirly Swiggles</Title>
<URL>http://www.sweetcandy.com/c-p/VS4111-546U135-U135</URL>
<PROMOTIONS>
<URL>http://www.sweetcandy.com/c-p/SA4211-472U135-U135http://www.sweetcandy.com/c-p/RK0179-000P143-P143http://www.sweetcandy.com/c-p/WJ4038-477U135-U135http://www.sweetcandy.com/c-p/HH3577-209U136-U136</URL>
</PROMOTIONS>
</SKU_TO_TUNE>
虽然我更喜欢这样的输出但而不需要URL之后的数字
<SKU_TO_TUNE>
<SKU>VS4111-546U135-U135</SKU>
<Title>Twirly Swiggles</Title>
<URL>http://www.sweetcandy.com/c-p/VS4111-546U135-U135</URL>
<PROMOTIONS>
<URL1>http://www.sweetcandy.com/c-p/SA4211-472U135-U135</URL1>
<URL2>http://www.sweetcandy.com/c-p/RK0179-000P143-P143</URL2>
<URL3>http://www.sweetcandy.com/c-p/WJ4038-477U135-U135</URL3>
<URL4>http://www.sweetcandy.com/c-p/HH3577-209U136-U136</URL4>
</PROMOTIONS>
</SKU_TO_TUNE>
有没有简单的方法来解决这个问题?
答案 0 :(得分:1)
您希望将要输出的列嵌套为嵌套XML:
这是一个有效的例子:
IF OBJECT_ID('tempdb..#Promotions','U') IS NOT NULL
DROP TABLE #Promotions
GO
CREATE TABLE #Promotions (
SKU VARCHAR(MAX),
Title VARCHAR(MAX),
PromotionURl1 VARCHAR(MAX),
PromotionURl2 VARCHAR(MAX),
PromotionURl3 VARCHAR(MAX),
PromotionURl4 VARCHAR(MAX),
)
INSERT #Promotions (SKU, Title, PromotionURl1, PromotionURl2, PromotionURl3, PromotionURl4)
VALUES ('VS4111-546U135-U135', 'Twirly Swiggles', 'http://www.sweetcandy.com/c-p/SA4211-472U135-U135', 'http://www.sweetcandy.com/c-p/RK0179-000P143-P143', 'http://www.sweetcandy.com/c-p/WJ4038-477U135-U135', 'http://www.sweetcandy.com/c-p/HH3577-209U136-U136');
SELECT
SKU,
Title,
(SELECT
PromotionURl1 URL, NULL,
PromotionURl2 URL, NULL,
PromotionURl3 URL, NULL,
PromotionURl4 URL
FOR XML PATH ('Promotions'), TYPE)
FROM #Promotions
FOR XML PATH ('SKU_TO_TUNE'), ROOT ('RECOMMENDATION_TUNINGS')
给你以下输出:
<RECOMMENDATION_TUNINGS>
<SKU_TO_TUNE>
<SKU>VS4111-546U135-U135</SKU>
<Title>Twirly Swiggles</Title>
<Promotions>
<URL>http://www.sweetcandy.com/c-p/SA4211-472U135-U135</URL>
<URL>http://www.sweetcandy.com/c-p/RK0179-000P143-P143</URL>
<URL>http://www.sweetcandy.com/c-p/WJ4038-477U135-U135</URL>
<URL>http://www.sweetcandy.com/c-p/HH3577-209U136-U136</URL>
</Promotions>
</SKU_TO_TUNE>
</RECOMMENDATION_TUNINGS>