У вас есть два варианта
- Чтобы расширить свой результат и вернуть отдельную строку для каждой уникальной комбинации MonthResolved, ResolvedByTeam и resolvedby.Это вернет больше строк, чем ваш исходный запрос, потому что в комбинации «один месяц / команда» вы получите столько строк, сколько преобразователей.
- Чтобы добавить еще один столбец к вашему запросу, в котором будет возвращен список (например,через запятую) с именами распознавателей.Это легко сделать с помощью функции STRING_AGG , но она доступна только в SQL Server 2017 и новее.В 2008 году вы можете выполнить несколько уродливых преобразований, используя предложение FOR XML .
Вот оба запроса для реализации вариантов 1 и 2:
;with cte1 as (
SELECT
CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2) as MonthResolved
, ResolvedByTeam
, resolvedby
FROM [dbo].[Incident]
WHERE stat_datetimeresolved >= '20170401'
GROUP BY CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2), ResolvedByTeam, resolvedby
)
select
MonthResolved
, ResolvedByTeam
, (select count(distinct resolvedby) as Name
from [dbo].[Incident] i
where CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2) = cte1.MonthResolved
and i.ResolvedByTeam = cte1.ResolvedByTeam)
, resolvedby
from cte1
ORDER BY MonthResolved asc, ResolvedByTeam, resolvedby
;with cte2 as (
SELECT
CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2) as MonthResolved
, ResolvedByTeam
, COUNT(DISTINCT resolvedby) as ResolvedByCnt
FROM [dbo].[Incident]
WHERE stat_datetimeresolved >= '20170401'
GROUP BY CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2), ResolvedByTeam
)
select *
from cte2
cross apply (select (
select distinct resolvedby + ', ' as [text()]
from [dbo].[Incident]
where ResolvedByTeam = cte2.ResolvedByTeam
and CAST(DATEPART(year, stat_datetimeresolved) as varchar(4)) + '-' + RIGHT('0' + CAST(DATEPART(month, stat_datetimeresolved) as varchar(2)), 2) = cte2.MonthResolved
for xml path ('')) as Names) t
ORDER BY MonthResolved asc, ResolvedByTeam