我在 MyTable 中有以下表格行:
MessageID EMailAddress DisplayName RecipientType
1 joe@email.com Joe To
1, Bob@email.com Max From
1, Max@email.com NULL To
1, Secret@email.com Secret Bcc
我正在尝试将其转换为如下所示的 XML:
<to>
<displayName>Joe</displayName>
<address>joe@email.com</address>
</to>
<from>
<displayName>Bob</displayName>
<address>Bob@email.com</address>
</from>
<to>
<address>Max@email.com</address>
</to>
<bcc>
<displayName>Secret</displayName>
<address>Secret@email.com</address>
</bcc>
我很接近,但无法弄清楚如何将 RecipientType 转换为其他两列的父元素
SELECT
a.EmailAddress as address,
a.DisplayName as displayName
FROM MyTable a
WHERE a.Id = 1
FOR XML PATH('address'), TYPE
有没有办法让“FOR XML PATH('address')”成为 RecipientType 而不是硬编码的“address”?或者还有其他选择吗?
我也尝试过使用 PIVOT,但似乎没有帮助。
我知道我可以使用动态 SQL,但我试图远离它。