如何汇总预订数量以显示位置的总预订和位置的总价值

时间:2018-09-17 17:12:25

标签: sql sql-server sql-server-2016

我正在写一份报告,该报告需要显示某个地点的预订数量以及这些预订的总价值。

如何汇总预订列并仅显示该位置的一行,其中包括预期数据示例中列出的列?

选择以下语句:

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的几种版本。我相信我需要使查询成为派生表,然后从中进行选择,但是即使答案是肯定的,也不确定如何去做。

谢谢。

0 个答案:

没有答案