У меня есть переменная таблицы, которая содержит записи, такие как:
locationID locationIDsub codetype code codeTitle
---------- ------------- -------- ---------- ---------------
24 15 08 000000 Scooters
51 15 08 000000 Scooters
51 15 08 110000 Trucks
24 15 08 110000 Trucks
51 15 08 111011 Semis
24 15 08 111011 Semis
24 15 08 119061 Dump Trucks
24 15 08 119071 Garbage Trucks
51 15 08 254011 Cars
То, что я хочу, это:
occcode occtitle count locationID
---------- ---------------------- ----- ---------
000000 Scooters 2 24,51
110000 Trucks 2 24,51
111011 Semis 2 24,51
119061 Dump Trucks 1 24
119071 Garbage Trucks 1 24
254011 Cars 1 51
Я могу получить счет просто отлично, просто не могучтобы получить количество + список идентификаторов местоположения, используя следующее:
SELECT Res.code,Res.codetitle,count(Res.codetitle)
FROM @resultsTable As Res
JOIN [dbo].[mv_VEHCODE_Union] As Veh
ON Res.code= Veh.code AND Res.codetype = Veh.vehcodetype
GROUP BY Res.code,Res.codetitle
ORDER BY code
Вот окончательная версия (все еще в процессе настройки), которую я использую, основываясь на ответе Дениса (я сбросил счетстолбец, поскольку используется только для отладки):
select distinct
v.code,
v.codetype,
locations = stuff((
select distinct ',' + cast(locationid as varchar)
from @resultsTable v2
where v2.code=v.code and v2.codetype = v.codetype
for xml path('')
),1,1,'')
from @resultsTable v
order by v.code