我對SQL相當陌生,並且對在錯誤分組上執行計數明確的子查詢有問題。我會很感激任何幫助。在錯誤的分組上執行COUNT DISTINCT的子查詢
我有一個與MS SQL Server(SSRS 2008)報表相關的特定組的會話參加者。
我想加入TblGroup,TblGroupSession和TblGroupSUAttendee並計算GROUPSUAttendee在任何GROUP的DISTINCT數量。下面的查詢是在任何SESSION計數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 2015-03-25 11:49:39