【问题标题】:How to add attribute value to root element when using for XML path?用于 XML 路径时如何将属性值添加到根元素?
【发布时间】:2018-12-28 14:08:33
【问题描述】:

我有这个 SQL 并且它可以工作:

set nocount on 

DECLARE
    @OrderID VARCHAR(200) = '13095314100';

declare @eOrder Table
(
  colOrderId  varchar(20),
  colDeliveryCountryCode varchar(20)
 )

insert into @eOrder values ('13095314100', 'SE')


SELECT 
    'name'  AS 'Val/@n', Sender.name AS Val

FROM @eOrder E
  inner join 
    (
       select  '12345' SenderID,     'KappAhl Sverige AB' "name",  'Idrottsvägen 14' "address1",   null address2,       '431 24' ZipCode,   'MÖLNDAL' City, 'SE' Country,  '010-138 87 11' phone
       union
       select  '12345',          'KappAhl Shop Online',       'c/o KappAhl OY',             'Unikkotie 3 C',    '01300'     ,  'VANTAA',        'PL',        '0753 267 881'    
    ) Sender
    on E.colDeliveryCountryCode = Sender.Country

WHERE colOrderId = @OrderID
FOR XML PATH('Sender');

我按预期得到了这个输出:

<Sender><Val n="name">KappAhl Sverige AB</Val></Sender>

但是如何将SenderID 作为属性添加到我的Sender 标记中?

想要的 XML 输出:

<Sender SenderID="12345" ><Val n="name">KappAhl Sverige AB</Val></Sender>

【问题讨论】:

    标签: sql-server xml sql-server-2008 tsql


    【解决方案1】:

    Sender.SenderID as '@SenderID' 添加到您的选择中:

    SELECT Sender.SenderID as '@SenderID',
        'name'  AS 'Val/@n', Sender.name AS Val
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多