Как суммировать количество бронирований, чтобы отобразить общее количество бронирований для местоположения и общую стоимость для местоположения - PullRequest
0 голосов
/ 17 сентября 2018

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

Как мне суммировать столбец бронирований и показывать только одну строку для местоположения, которая включает столбцы, приведенные в примере ожидаемых данных?

Выберите оператор ниже:

SELECT 

Locations.Description as LocationsDesc,
Locations.LocationGUID,
Venues.VenueName,
Venues.VenueGUID,
count (Bookings.BookingID) as Bookings,
Departments.DepartmentName,
Departments.DepartmentGUID,
sum(SalesTransactionDetails.NetDetailValue) as NetDetailValue,
sum(SalesTransactionDetails.DetailValue) as DetailValue,
SUM(CASE When Salestransactionlines.itemtype = 1 Then SalesTransactionDetails.NetDetailValue Else 0 End ) as RentalFee,
SUM(CASE When Salestransactionlines.itemtype = 2 Then SalesTransactionDetails.NetDetailValue Else 0 End ) as ExtraFee,
SalesTransactions.SalesTransactionGUID


FROM   BookingLinesDetails 
INNER JOIN Bookings ON BookingLinesDetails.BookingGUID=Bookings.BookingGUID
INNER JOIN Locations ON BookingLinesDetails.LocationGUID=Locations.LocationGUID
INNER JOIN Venues on Venues.Venueguid = Locations.Venueguid
INNER JOIN SalesTransactionDetails ON BookingLinesDetails.BookingLinesDetailGUID=SalesTransactionDetails.BookingLinesDetailGUID
INNER JOIN SalesTransactionLines ON SalesTransactionDetails.SalesTransactionLineGUID=SalesTransactionLines.SalesTransactionLineGUID 
INNER JOIN SalesTransactions ON SalesTransactionLines.SalesTransactionGUID=SalesTransactions.SalesTransactionGUID
INNER JOIN Departments on Departments.DepartmentGUID = Locations.DepartmentGUID

WHERE  
    BookingLinesDetails.StartDateTime >= dbo.InzDateOnly(@pFromDate) and 
    BookingLinesDetails.StartDateTime < DateAdd(day,1,dbo.inzDateOnly(@pToDate)) and
    Departments.DepartmentGUID in (Select GUID from dbo.InzSplitGUID(@DepartmentID)) and
    (@IncludeAllLocationGroupsInVenues <> 0 or (@IncludeAllLocationGroupsInVenues = 0 )) and
    Venues.VenueGUID in (Select GUID  from dbo.InzSplitGUID(@VenueID)) and
    salesTransactions.Status = 1 and -- remove cancelled
    salestransactions.receiptonly = 0 



GROUP BY 

Locations.Description,
Locations.LocationGUID,
Venues.VenueName,
Venues.VenueGUID,
Departments.DepartmentName,
Departments.DepartmentGUID,
SalesTransactions.SalesTransactionGUID

В данный момент вывод:

LocationsDesc MC - Deck Room

Требуемый вывод:

LocationsDesc        LocationGUID   VenueGUID   Bookings    DepartmentName  NetDetailValue  DetailValue ExtraFee
Location - Deck Room    348A43F12   7DAD77BE    33           Aquatics Centre    2059.46      2162.5 0

Я пробовал несколько версий Count и sum.Я считаю, что мне нужно сделать запрос производной таблицей, а затем выбрать из него, но я не уверен, что делать, даже если это ответ.

Заранее спасибо.

...