다른 필드를 선택하는 반복 된 하위 쿼리없이이 작업을 수행하는 더 좋은 방법이 있습니까?SQL Server에서 동일한 하위 쿼리의 여러 집계
SELECT Name, er.DateEventStarts, e.LocationName,
(SELECT count(*) FROM Ticket t WHERE t.Deleted = 0 AND Refunded = 0 AND t.EventRepetitionID = er.EventRepetitionID) AS NoOfAttendees,
(SELECT sum(t.TicketTotalCost) FROM Ticket t WHERE t.Deleted = 0 AND Refunded = 0 AND t.EventRepetitionID = er.EventRepetitionID) AS NoOfAttendees,
(SELECT sum(t.OnlinePayFee) FROM Ticket t WHERE t.Deleted = 0 AND Refunded = 0 AND t.EventRepetitionID = er.EventRepetitionID) AS OnlinePayFee,
(SELECT sum(t.OnlinePayTotalCost) FROM Ticket t WHERE t.Deleted = 0 AND Refunded = 0 AND t.EventRepetitionID = er.EventRepetitionID) AS OnlinePayTotalCost
FROM [Event] e
JOIN EventRepetition er ON er.EventRepetitionID = (SELECT TOP 1 EventRepetitionID FROM EventRepetition er2 WHERE er2.EventID = e.EventID)
당신은 하위 쿼리가 거의 동일하지만 단지 요약하거나 다른 행을 계산 볼 수 있듯이. 나는이 일을하는 더 좋은 방법이 있어야한다고 느낍니다.하지만 그 일을하는 방법을 알 수는 없습니다. 나는 이것이 아마도 매우 효율적이지 않을 것이라고 생각한다.
내가 이미 사과했지만이 문제를 설명 할 수있는 방법을 생각할 수 없어 사과 할 수 없으므로 해결책을 찾지 못했습니다.
아 네 원인 : 지금은 분명해 보이지만 그 당시에는 아무 것도 생각할 수 없었습니다. 고맙습니다. 완벽한 솔루션입니다. –