Я интерпретирую это:
Joe Programmer (or Janitor) 9
Как говорится, что все это нормально:
Joe Programmer 9
Joe Janitor 9
Запрос будет выглядеть так:
SELECT qsu.UserFirstName + ' ' + qsu.UserLastName,
MIN(qsu.RoleName) as RoleName
SUM(NumberOfEditTotal) as NumberOfEditTotal
FROM vw_QuickbaseAudit v JOIN
[staging].[QuickbaseSystemUsers] qsu
ON v.[user] = qsu.UserId
WHERE Date_Modified >= @StartDate AND
Date_Modified < DATEADD(day, 1, @EndDate)
GROUP BY qsu.UserFirstName + ' ' + qsu.UserLastName
ORDER BY RoleName, NumberOfEditTotal DESC;
Неясно, как рассчитывается NumberOfEditTotal
.
РЕДАКТИРОВАТЬ:
Добавление всех строк в хитрый.В последних версиях SQL Server вы можете использовать STRING_AGG()
в качестве функции агрегирования строк.Это просто.
Моя рекомендация в ранних версиях была бы компромиссом.Значения могут быть следующими:
Janitor
Janitor and Programmer
Janitor, Programmer, and others
Вы можете сделать это с помощью:
(case when min(rolename) = max(rolename)
then min(rolename)
when count(distinct rolename) = 2
then min(rolename) + ' and ' + max(rolename)
else min(rolename) + ', ' + max(rolename) + ' others'
end)