列作为SQL Server中XML路径查询的内容

列作为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

我使用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
        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')