我正在创建一个查询来发送批量电子邮件应用程序 XML,其中包含组装适当电子邮件所需的所有内容。我似乎无法让嵌套元素正常工作。
我正在尝试获取看起来像这样的 XML
<EmailsToBeSent>
<EmailToBeSent>
<ReferenceId>1</ReferenceId>
<Tags>
<Tag>
<Name>ToAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c3a1afa2ab83a1afa2abeda0acae" rel="noreferrer noopener nofollow">[email protected]</a></Value>
</Tag>
<Tag>
<Name>CCAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="522b33363633122b333636337c313d3f" rel="noreferrer noopener nofollow">[email protected]</a></Value>
</Tag>
<Tag>
<Name>FromAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b666e4b666e25686466" rel="noreferrer noopener nofollow">[email protected]</a></Value>
</Tag>
</Tags>
<SomethingElse>'asASas'</SomethingElse>
</EmailToBeSent>
</EmailsToBeSent>
到目前为止,我得到的最接近的是:
SELECT
ReferenceId,
(SELECT
'ToAddress' AS "Tag/Name",
ToAddress AS "Tag/Value",
'CCAddress' AS "Tag/Name",
CCAddress AS "Tag/Value",
'FromAddress' AS "Tag/Name",
FromAddress AS "Tag/Value"
FROM
EmailTable AS ET
WHERE
ET.ReferenceId = RT.ReferenceId
FOR XML PATH('Tags'), TYPE),
'asASas' AS SomethingElse
FROM
RefTable AS RT
FOR XML PATH('EmailToBeSent'), ROOT('EmailsToBeSent')
结果是:
<EmailsToBeSent>
<EmailToBeSent>
<ReferenceId>1</ReferenceId>
<Tags>
<Tag>
<Name>ToAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e1838d8089a1838d8089cf828e8c" rel="noreferrer noopener nofollow">[email protected]</a></Value>
<Name>CCAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5e273f3a3a3f1e273f3a3a3f703d3133" rel="noreferrer noopener nofollow">[email protected]</a></Value>
<Name>FromAddress</Name>
<Value><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c0ada580ada5eea3afad" rel="noreferrer noopener nofollow">[email protected]</a></Value>
</Tag>
</Tags>
<SomethingElse>'asASas'</SomethingElse>
</EmailToBeSent>
</EmailsToBeSent>
最佳答案
只需在组之间添加分隔符即可。
SELECT ReferenceId
, (SELECT 'ToAddress' AS "Tag/Name"
, ToAddress AS "Tag/Value"
, null AS "separator"
, 'CCAddress' AS "Tag/Name"
, CCAddress AS "Tag/Value"
, null AS "separator"
, 'FromAddress' AS "Tag/Name"
, FromAddress AS "Tag/Value"
FROM EmailTable AS ET
WHERE ET.ReferenceId = RT.ReferenceId
FOR XML PATH('Tags'),TYPE
)
, 'asASas' AS SomethingElse
FROM RefTable AS RT
FOR XML PATH('EmailToBeSent'), ROOT('EmailsToBeSent')
关于SQL XML 嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707402/