XML路径/填充组合中的对象名称无效

时间:2018-06-28 11:24:08

标签: sql-server for-xml-path

我试图将不同行中的某些值放到一列中,并且不断出现此错误:

  

无效的对象名称“ t”

查询相当大且复杂,因此我将查询范围缩小到一个仍然可以给出错误的简单部分。

select 
   IDs = stuff( ( select ',' + convert(varchar, t2.ChassisID)
                  from   t as t2
                  where  t2.ChassisID = 42 --t.ChassisID
                  for XML path('')
                )
                , 1, 1, '' 
              )
from   ( select ch.ChassisID, p.GPS 
         from   tblChassis ch
           inner join tblPlace p on ch.BestemmingID = p.PlaceID
       ) t        
group by t.Gps

我尝试将where子句更改为固定数字(42)而不是t.ChassidID并仍然收到错误,因此仅剩一个地方可能会导致我假设的错误,但我不明白为什么。

我可能缺少一些简单的东西,但我看不到它。
此查询有什么问题?

我正在使用Sql Server 2014

1 个答案:

答案 0 :(得分:2)

尝试在CTE中声明过滤后的表格,然后两次都引用该CTE。

;WITH FilteredChassis AS 
(
     select 
        ch.ChassisID, 
        p.GPS 
     from   
        tblChassis ch
        inner join tblPlace p on ch.BestemmingID = p.PlaceID
)
select
    t.Gps,
   IDs = stuff( ( select ',' + convert(varchar, t2.ChassisID)
                  from   FilteredChassis as t2
                  where  t2.Gps = t.Gps
                  for XML path('')
                )
                , 1, 1, '' 
              )
from
    FilteredChassis AS t
group by 
    t.Gps

我已经通过gps建立了链接,我相信这就是您所需要的。