Неверное имя объекта в комбинации XML Path / Stuff - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь получить некоторые значения из разных строк в одном столбце, и я получаю эту ошибку:

Неверное имя объекта '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 голосов
/ 28 июня 2018

Попробуйте объявить отфильтрованную таблицу в 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, я думаю, это то, что вам нужно.

...