1

我有一个预订表,用于存储预订信息。我们允许在白天预订两个不同的时间段,让我们在工作日上午 10:30 和下午 4:00 进行预订,对于特定时间段,我们最多只能接待 50 名访客。

样本表和数据的详细信息如下所示

根据样本数据,我们无法进行预订,2012-08-23/16:30因为它已达到最大访客数量。

以下查询将为我提供我需要在日历上阻止特定时间的日期,以便用户可以为此日期进行预订。

 SELECT 
     SUM(NoOfVisitors) as Total, TimeSlot, BookingDate, BookingCancelled  
 FROM 
     VisitorBooking  
 GROUP BY 
     BookingDate, TimeSlot, BookingDate, BookingCancelled 
 HAVING 
     SUM(NoOfVisitors) >= 50 AND TimeSlot = '16:30' 

输出

Total TimeSlot  BookingDate BookingCancelled
50    10:30     2012-08-23  0

我在编写 SQL 查询时遇到问题,该查询将检查他们是否有任何取消,并将计算并给我需要阻止的日期。我尝试了一些查询,但这并没有给我想要的结果。如果我运行上述查询,它也会显示我2012-07-20被阻止,但由于其中一个预订已被取消,它仍有 3 位访客可用。

这个查询给了我结果,但我不完全确定这是否正确

 SELECT 
     SUM(NoOfVisitors) as Total, TimeSlot, BookingDate, BookingCancelled  
 FROM 
     VisitorBooking  
 GROUP BY 
     BookingDate, TimeSlot, BookingDate, BookingCancelled 
 HAVING 
     (SUM(NoOfVisitors) >= 50 AND TimeSlot = '16:30' )
AND (BookingCancelled = 'false')

我迷失在这方面,我将不胜感激这方面的帮助

我不确定是否可以在不使用 CTE 查询的情况下实现这一目标。

CREATE TABLE Booking(
    BookingID nvarchar(10) NOT NULL,
    FirstName nvarchar(150) NULL,
    LastName nvarchar(150) NULL,
    Email nvarchar(150) NULL,
    CompanyName nvarchar(200) NULL,
    Country nvarchar(150) NULL,
    Phone varchar(50) NULL,
    NoOfVisitors int NULL,
    BookingDate date NULL,
    TimeSlot varchar(12) NULL,
    BookedOn datetime NULL,
    GUIDNo varchar(50) NULL,
    BookingCancelled bit NULL,
    )

样本数据

BookingID   FirstName LastName Email    CompanyName Country Phone   NoOfVisitors    BookingDate     TimeSlot    BookedOn    GUIDNo  BookingCancelled
---------------------------------------------------------------------------------------------------------------------------------------------------
1900221519  Mark    Tailor  abc@abc.com     XYZ     USA     111111  45              2012-07-20       10:30       2012-06-25 XXXXX   false
5600515751  Michael Brown   abc@abc.com     XYZ     UK      111111  2               2012-07-20       10:30       2012-06-25 XXXXX   false
1638934678  John    Lee     abc@abc.com     XYZ     UK      111111  3               2012-07-20       10:30       2012-06-25 XXXXX   true
8852224170  Lee Wong        abc@abc.com     XYZ     China   111111  50              2012-08-23       16:30       2012-07-15 XXXXX   false
4

0 回答 0