Есть ли лучший способ сделать это без повторяющихся подзапросов, которые просто выбирают другое поле?
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)
Как вы можете видеть, подзапросы почти одинаковы, но просто суммируют или подсчитываютдругой ряд.Я чувствую, что должен быть лучший способ сделать это, но не могу понять, как еще это сделать.Я думаю, что это, вероятно, не очень эффективно.
Я прошу прощения, если на это уже был дан ответ, но я просто не могу придумать способ описать эту проблему, поэтому не смог найти решение.