2

我有一个查询带回以下内容:

在此处输入图像描述

并希望通过未来的预订为每位客户带回“是”。

在此处输入图像描述

将来使用以下方法为每次预订带回“是”相对容易:

Case [DepartDate] 
When [Departdate] > getdate() then 'Yes' else 'no'
End AS 'Future booking?'

..但我一直坚持如何在未来的预订中对每个客户回复“是”(无论输出线上的预订如何)。

任何人都可以帮忙吗?

4

4 回答 4

2

我认为您正在寻找CASE,MAXOVER

以下应该会给你想要的结果:

SELECT  BookingID, 
        ClientID, 
        CASE 
            WHEN MAX(DepartDate) OVER(PARTITION BY ClientId) > GETDATE() THEN 'Yes'
            ELSE 'No'
        END AS [Future booking]
FROM    Bookings
于 2013-10-01T17:00:57.520 回答
0

您可以从单独的查询中提取未来的预订价值。

select booking_id, client_id, depart_date, 
   coalesce( (select distinct 'yes' 
              from booking future 
              where future.client_id = all_bookings.client_id 
              and future.depart_date > GETDATE() ), 'no') as future_booking
from booking all_bookings
于 2013-10-01T16:56:50.923 回答
0

这将表现良好,尤其是如果您在 client_id 和 leave_date 上有索引。

        select b.booking_id, 
        b.client_id, 
        b.depart_date, 
        case when future_booking.client_id is null then 'No' 
             else 'Yes' end as HasFuture
        from booking b
        left join   
           (select distinct client_id
                      from booking  
                      where depart_date > GETDATE() 
            ) as future_booking
        on b.client_id = future_booking.client_id
于 2013-10-01T17:05:23.547 回答
0
SELECT [BookingID]
      ,[ClientID]
      ,[DepartDate]
      ,CASE  
    When [DepartDate] > getdate() then 'Yes' else 'no'
    END as 'FutureDate?'
FROM [dbo].[Bookings]
于 2013-10-01T16:31:31.157 回答