Hello there,I have a query that I'm building, as I build I test and cross reference the results.When I run the below query:SELECT Dimensions.Depot.Depot, Dimensions.Depot.DepotCode, COUNT(DISTINCT BookingTransaction.BookingRef) AS Bookings, SUM(BookedCarsList.Duration) AS Duration, Dimensions.Resort.ResortFROM Dimensions.Depot INNER JOIN Dimensions.Resort INNER JOIN Dimensions.Location ON Dimensions.Resort.ResortID = Dimensions.Location.ResortID ON Dimensions.Depot.LocationID = Dimensions.Location.LocationID LEFT OUTER JOIN BookingTransaction WITH (NOLOCK) INNER JOIN BookedCarsList WITH (NOLOCK) ON BookingTransaction.BookingTransactionID = BookedCarsList.BookingTransactionID AND BookingTransaction.TransactionDate BETWEEN CONVERT(DATETIME, '2011-09-01 00:00:00', 102) AND CONVERT(DATETIME, '2011-09-30 00:00:00', 102) INNER JOIN Bookings WITH (NOLOCK) ON BookingTransaction.BookingRef = Bookings.BookingRef ON Dimensions.Depot.DepotID = BookedCarsList.PickupDepotIDWHERE (Dimensions.Resort.Resort = 'Denver')GROUP BY Dimensions.Depot.Depot, Dimensions.Depot.DepotCode, BookedCarsList.IsCancelled, Dimensions.Resort.Resort, BookingTransaction.BookingRefHAVING (SUM(BookedCarsList.Duration) > 0) OR (SUM(BookedCarsList.Duration) IS NULL) OR (BookedCarsList.IsCancelled IS NULL) AND (NOT (BookedCarsList.IsCancelled = 1))
I get the correct number of rows, when I comment out the BookingTransaction.Bookingref as below to get a count of Booking and each Depot I get a different count on certain depots.SELECT Dimensions.Depot.Depot, Dimensions.Depot.DepotCode, COUNT(DISTINCT BookingTransaction.BookingRef) AS Bookings, SUM(BookedCarsList.Duration) AS Duration, Dimensions.Resort.ResortFROM Dimensions.Depot INNER JOIN Dimensions.Resort INNER JOIN Dimensions.Location ON Dimensions.Resort.ResortID = Dimensions.Location.ResortID ON Dimensions.Depot.LocationID = Dimensions.Location.LocationID LEFT OUTER JOIN BookingTransaction WITH (NOLOCK) INNER JOIN BookedCarsList WITH (NOLOCK) ON BookingTransaction.BookingTransactionID = BookedCarsList.BookingTransactionID AND BookingTransaction.TransactionDate BETWEEN CONVERT(DATETIME, '2011-09-01 00:00:00', 102) AND CONVERT(DATETIME, '2011-09-30 00:00:00', 102) INNER JOIN Bookings WITH (NOLOCK) ON BookingTransaction.BookingRef = Bookings.BookingRef ON Dimensions.Depot.DepotID = BookedCarsList.PickupDepotIDWHERE (Dimensions.Resort.Resort = 'Denver')GROUP BY Dimensions.Depot.Depot, Dimensions.Depot.DepotCode, BookedCarsList.IsCancelled, Dimensions.Resort.Resort /*, BookingTransaction.BookingRef*/HAVING (SUM(BookedCarsList.Duration) > 0) OR (SUM(BookedCarsList.Duration) IS NULL) OR (BookedCarsList.IsCancelled IS NULL) AND (NOT (BookedCarsList.IsCancelled = 1))
Any ideas, I'm sure this is a schoolboy error, I just can't see it.TIA