列作为SQL Server中XML路径查询的内容
我使用SQL查询从SQL Server 2012获取数据:列作为SQL Server中XML路径查询的内容,sql,sql-server,xml,xpath,sqlxml,Sql,Sql Server,Xml,Xpath,Sqlxml,我使用SQL查询从SQL Server 2012获取数据: select dbo.TRIM(cfProj.cfProjId) as "cfProjId", dbo.TRIM(cfProj.cfAcro) as "cfAcro", (SELECT cfLangCode as "@cfLangCode", cfTrans as "@cfTrans", cfProjTitle.cfTitle FROM dbo.cfProjTitle WH
select dbo.TRIM(cfProj.cfProjId) as "cfProjId",
dbo.TRIM(cfProj.cfAcro) as "cfAcro",
(SELECT cfLangCode as "@cfLangCode", cfTrans as "@cfTrans", cfProjTitle.cfTitle
FROM dbo.cfProjTitle
WHERE dbo.cfProjTitle.cfProjId = dbo.cfProj.cfProjId
FOR XML PATH('cfTitle'), type)
from cfProj FOR XML PATH('cfProj')
此SQL返回如下数据结构:
<cfProj>
<cfProjId>00001111</cfProjId>
<cfAcro>222</cfAcro>
<cfTitle cfLangCode="ru" cfTrans="h">
<cfTitle>some title here</cfTitle>
</cfTitle>
</cfProj>
00001111
222
这里有一些标题
但我希望获得不含第二个嵌套“cfTitle”元素的XML结构:
00001111
222
这里有一些标题
这一行的区别:这里有一些标题
您知道如何获得理想的结果吗?如果您不需要多个cfTitle元素,您可以使用marc_的解决方案,但如果需要,您可以尝试以下方法:
select
p.cfProjId,
p.cfAcro,
(
select
pt.cfLangCode as [@cfLangCode],
pt.cfTrans as [@cfTrans],
pt.cfTitle as [text()]
from cfProjTitle as pt
where pt.cfProjId = p.cfProjId
for xml path('cfTitle'), type
)
from cfProj as p
for xml path('cfProj')
如果不需要多个cfTitle元素,可以使用marc_的解决方案,但如果需要,可以尝试以下方法:
select
p.cfProjId,
p.cfAcro,
(
select
pt.cfLangCode as [@cfLangCode],
pt.cfTrans as [@cfTrans],
pt.cfTitle as [text()]
from cfProjTitle as pt
where pt.cfProjId = p.cfProjId
for xml path('cfTitle'), type
)
from cfProj as p
for xml path('cfProj')