- 왜이 쿼리에서 중복을 제한하는 데 필요한 'WHERE'절이 마지막입니까?
- 첫 번째 좌, UID를
- 하위 쿼리에 연결하여
- 제 1 내부는 이러한 프로그램에 대한 통계를 얻을 하위 쿼리에 프로그램을 연결되어 조인 UID에 엔티티 프로그램을 연결한다 JOIN (즉, StatsForDistributorClubs를 가져옵니다 하위 집합) UID 열 그룹화하고있다
- 그럼,이 모든 것이 고유 한 레코드에 합쳐져 행 중복을 가져 오지 않아야한다고 생각했을 것입니다.
- 그래서 최종 WHERE '프로그램'이 '실체'에 연결되도록 보장함으로써?
(명확성을 위해 생략 쿼리의 관련이없는 부분)SQL - 이미 그룹화 중일 때 행 복제본을 제거해야하는 이유는 무엇입니까?
SELECT LmiEntity.[DisplayName]
,StatsForDistributorClubs.*
FROM [Program]
LEFT JOIN
LMIEntityProgram
ON LMIEntityProgram.ProgramUid = Program.ProgramUid
INNER JOIN
(
SELECT e.LmiEntityUid,
sp.ProgramUid,
SUM(attendeecount) [Total attendance],
FROM LMIEntity e,
Timetable t,
TimetableOccurrence [to],
ScheduledProgramOccurrence spo,
ScheduledProgram sp
WHERE
t.LicenseeUid = e.lmientityUid
AND [to].TimetableOccurrenceUid = spo.TimetableOccurrenceUid
AND sp.ScheduledProgramUid = spo.ScheduledProgramUid
GROUP BY e.lmientityUid, sp.ProgramUid
) AS StatsForDistributorClubs
ON Program.ProgramUid = StatsForDistributorClubs.ProgramUid
INNER JOIN LmiEntity
ON LmiEntity.LmiEntityUid = StatsForDistributorClubs.LmiEntityUid
LEFT OUTER JOIN Region
ON Region.RegionId = LMIEntity.RegionId
WHERE (
[Program].LicenseeUid = LmiEntity.LmiEntityUid
OR
[LMIEntityProgram].LMIEntityUid = LmiEntity.LmiEntityUid
)
감사합니다 - 그 좋은 지적이고 원인을 좁혀. 이 질문에 답을 주겠다. 아무에게도 데이터에 대한 액세스가 없으면이를 정확히 지적 해 줄 것을 기대할 수는 없다. –