Sql 添加额外的节点XML
我正在使用FOR XML PATH提取一些数据。但是,我无法获取节点。 预期结果:Sql 添加额外的节点XML,sql,xml,sql-server-2016,for-xml-path,Sql,Xml,Sql Server 2016,For Xml Path,我正在使用FOR XML PATH提取一些数据。但是,我无法获取节点。 预期结果: <Users> <User UserId="1"> <Profile> <PersonalDetails> <FirstName>Name1</FirstName> <LastName>Last1</LastName> </PersonalDetail
<Users>
<User UserId="1">
<Profile>
<PersonalDetails>
<FirstName>Name1</FirstName>
<LastName>Last1</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
<User UserId="2">
<Profile>
<PersonalDetails>
<FirstName>Name2</FirstName>
<LastName>Last2</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
<User UserId="3">
<Profile>
<PersonalDetails>
<FirstName>Name3</FirstName>
<LastName>Last3</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
<User UserId="4">
<Profile>
<PersonalDetails>
<FirstName>Name4</FirstName>
<LastName>Last4</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
</Users>
到目前为止,我得到的是:
<Users>
<User UserId="1">
<PersonalDetails>
<FirstName>Name1</FirstName>
<LastName>Last1</LastName>
</PersonalDetails>
<Reward>0</Reward>
</User>
</User>
<User UserId="2">
<PersonalDetails>
<FirstName>Name2</FirstName>
<LastName>Last2</LastName>
</PersonalDetails>
<Reward>0</Reward>
</User>
<User UserId="3">
<PersonalDetails>
<FirstName>Name3</FirstName>
<LastName>Last3</LastName>
</PersonalDetails>
<Reward>0</Reward>
</User>
<User UserId="4">
<PersonalDetails>
<FirstName>Name4</FirstName>
<LastName>Last4</LastName>
</PersonalDetails>
<Reward>0</Reward>
</User>
</Users>
名称1
最后1
0
姓名2
最后2
0
名字3
最后3
0
名字4
最后的
0
我无法添加额外的配置文件元素。
我尝试使用modify('insert as first into(/Users/User)[1]),但输出也没有那么快。
您能帮我做一下吗?您的数据似乎是简单的
1:1
内部:嵌套的,但不是1:n
。这不需要子选择。使用XML路径的
可以直接指定嵌套:
DECLARE @User TABLE ( ID INT
,FirstName VARCHAR(20)
,LastName VARCHAR(20)
,Reward BIT
)
INSERT INTO @User (ID, FirstName, LastName, Reward )
VALUES (1, 'Name1', 'Last1', 0)
,(2, 'Name2', 'Last2', 0);
SELECT ID AS [@UserId]
,FirstName AS [Profile/PersonalDetails/FirstName]
,LastName AS [Profile/PersonalDetails/LastName]
,Reward AS [Profile/Reward]
FROM @User AS u
FOR XML PATH('User'),ROOT('Users')
结果
<Users>
<User UserId="1">
<Profile>
<PersonalDetails>
<FirstName>Name1</FirstName>
<LastName>Last1</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
<User UserId="2">
<Profile>
<PersonalDetails>
<FirstName>Name2</FirstName>
<LastName>Last2</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
</Users>
名称1
最后1
0
姓名2
最后2
0
这是一个非常好的问题!独立测试场景、明确问题、自己的尝试、错误和预期输出。太好了,投票通过了!我很感激@Shnugo:)
<Users>
<User UserId="1">
<Profile>
<PersonalDetails>
<FirstName>Name1</FirstName>
<LastName>Last1</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
<User UserId="2">
<Profile>
<PersonalDetails>
<FirstName>Name2</FirstName>
<LastName>Last2</LastName>
</PersonalDetails>
<Reward>0</Reward>
</Profile>
</User>
</Users>