【发布时间】:2014-09-22 15:59:23
【问题描述】:
我有以下查询(SQL Server):
select a.Booking_Type, b.Unit_Code, a.Start_Date, a.End_Date
from Booking a
inner join Property b
on a.Property_ID = b.Property_ID
where a.Agency_ID = 1020 and
b.IsEnabled = 1 and
a.Hold_Agreement_Signed is null and
(convert(varchar(10), a.Start_Date, 102) = convert(varchar(10), getdate(), 102) or convert(varchar(10), a.End_Date, 102) = convert(varchar(10), getdate()-1, 102))
我的查询结果如下:
Booking_Type Unit_Code Start_Date End_Date
0 448 2014-09-22 00:00:00 2014-09-28 00:00:00
0 448 2014-09-21 05:00:00 2014-09-21 05:00:00
0 K187 2014-09-19 00:00:00 2014-09-21 00:00:00
0 K187 2014-09-18 00:00:00 2014-09-21 00:00:00
我希望得到的是 Unit_Code = 448 的单行,因为它有一行的 Start_Date 为今天,一行的 End_Date 为昨天(昨天有一个结帐,今天有一个签入)。
如何修改我的查询以获得此信息?
【问题讨论】:
-
SQL 服务器。更新了我的问题。
-
在我看来,您需要
max(start_date)和min(end_date)group by booking_type, unit_code。它不是很清楚你为什么要得到这些日期。 -
如果您使用的是 SQL Server 2012+,则可以使用
LEAD()和LAG()分析函数。 -
那么您希望结果看起来如何?
-
您希望 448 的单行看起来像什么?
标签: sql sql-server tsql