0

我在 SQL Server 2008 中有这个表“保险”

insuranceId    StartDate         EndDate         CarID
   1           1-jan-2010        1-Jan-2011       1
   2           2-Jan-2011        2-Jan-2012       1
   3           1-Jan-2012        1-Jan-2012       2


我需要编写查询返回:

汽车连续两次被保险

这个数据库对于保险公司我需要得到有两个连续保险的汽车

换句话说,获取记录中的 Enddate = (startdate + 1) 的汽车的另一条记录中的汽车

对于这张桌子,我需要得到 carId = 1 因为

EndDate in Firstrecord = 1-Jan-2011 and the StartDate in second record = 2-Jan-2011

4

2 回答 2

2

据我了解,这可以满足您的需求:

SELECT io.CarID
FROM insurance AS io
WHERE DATEADD(DAY, 1, io.EndDate) IN
    (SELECT ii.StartDate
     FROM insurance AS ii
     WHERE ii.CarID = io.CarID);
于 2012-05-23T05:24:05.560 回答
-2
SELECT TOP 2 * FROM insurance WHERE insuranceId > 1 ORDER BY insuranceId

其中 1 是您需要的第一辆汽车的 ID。

于 2012-05-22T17:54:27.180 回答