Вы пропустили псевдоним в таблице
- Условие B.qID = qID всегда возвращает true, как если бы 1 = 1, он ничего не делал. Это было похоже на B.qID = B.qID.
Использование псевдонима:
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=A.qID
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl A
WHERE qID in (2258060,2296222)
GROUP BY qID
Это также возможно без псевдонима для внешнего запроса, используя само имя таблицы.
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=tbl.qID --Table name before qid here
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl
WHERE qID in (2258060,2296222)
GROUP BY qID