Я довольно новичок в SQL и имею проблему с подзапросом, который выполняет подсчет, отличный от неправильной группировки. Я был бы признателен за любую помощь с этим.Подзапрос, выполняющий COUNT DISTINCT в неправильной группировке
У меня есть участники сеансов для определенной группы, которые я запрашиваю для отчета MS SQL Server (SSRS 2008).
Я пытаюсь присоединиться к TblGroup, TblGroupSession и TblGroupSUAttendee и считать число DISTINCT GroupSUAttendee в любой группе. Нижеприведенный запрос подсчитывает различное количество GroupSUAttendee на любой СЕССИИ, поэтому, когда я добавляю счеты вместе для группы, я получаю дубликаты, если TblGroupSUAttendee посетил более одного сеанса.
Мне нужно сохранить одну строку за сеанс в запросе так, как мне нужно, для других целей, но для каждой строки сеанса отлично, чтобы показать полную сумму TblGroupSUAttendees для этой группы, поскольку я могу ссылаться на это значение один раз на группу в моем отчете SSRS.
Мысли/советы/указатели очень ценится. Благодаря Eils
SELECT
TblGroup.GroupId
,TblGroupSession.GroupSessionId
,TblGroupSession.GroupSessionDate
,TblGroupSUAttendee.GroupSUAttendeeCount
FROM
TblGroup
LEFT OUTER JOIN TblGroupSession
ON TblGroup.GroupId = TblGroupSession.GroupSessionGroupId
LEFT OUTER JOIN (select COUNT(DISTINCT GroupSUAttendeeId) AS GroupSUAttendeeCount,
GroupSUAttendeeGroupSessionId
FROM TblGroupSUAttendee
GROUP BY GroupSUAttendeeGroupSessionId) as TblGroupSUAttendee ON GroupSUAttendeeGroupSessionId = TblGroupSession.GroupSessionId
WHERE
GroupSessionDate >= @StartDate AND GroupSessionDate <= @EndDate
Спасибо за ваш быстрый ответ! Я сделал небольшое исправление «ON ga.GroupSUAttendeeGroupSessionId = gs.GroupSessionId», и он работает как отдельный запрос, но мне нужно держать строки для сеансов в моем запросе для других целей, поэтому не совсем уверен, как сделать этот подзапрос – EileenS