SQL Server Агрегатная функция

У меня есть запрос на выбор как,

SELECT isnull(T1.TotalShows, 0) AS TotalShows, isnull(T1.ScreenCapacity, 0) AS ScreenCapacity, isnull(T1.ShowDate, 0) AS ShowDate, isnull(T2.TotalTicketsSold, 0) AS TotalTicketsSold, isnull(T2.Nett, 0) AS Nett
FROM (
    SELECT COUNT(showtimeId) AS TotalShows, sum(sc.Capacity) AS ScreenCapacity, ShowDate 
    FROM Shows s
    JOIN Screens sc ON sc.ScreenID = s.ScreenID
    WHERE s.MovieID = 34
        AND s.IsDeleted = 0
    GROUP BY ShowDate
    ) AS T1
LEFT OUTER JOIN (
    SELECT s.ShowDate, COUNT(ut.UserTicketID) AS TotalTicketsSold, SUM(ISNULL((Price + ConvinienceCharge - DiscountAmount) / (EntertainmentTax + BoxOfficeTax + 1), 0)) AS Nett
    FROM Shows s
    LEFT OUTER JOIN UserTickets ut ON s.ShowID = ut.ShowID
    WHERE ut.ShowID IN (
            SELECT ShowID
            FROM Shows
            WHERE MovieID = 34
                AND IsDeleted = 0
            GROUP BY ShowID
            )
    GROUP BY s.ShowDate
    ) AS T2 ON T1.ShowDate = T2.ShowDate

Это возвращает данные как,введите описание изображения здесь

Я хочу агрегировать данные как

SUM(totalShows),SUM(ScreenCapacity),MAX(ShowDate),SUM(TotalTicketsSold),SUM(Nett)

Но я хочу это только для первых 7 строк, как показано на рисунке выше. Для более чем 7 строк я хочу агрегированные данные в следующей строке.

1 ответ

Решение

Как насчет:

GROUP BY DATEPART(YEAR, ShowDate), DATEPART(WEEK, ShowDate)
Другие вопросы по тегам