我试图将不同行中的某些值放到一列中,并且不断出现此错误:
无效的对象名称“ 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
答案 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
建立了链接,我相信这就是您所需要的。