0

SQLServer2008にこのテーブル「保険」があります

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


クエリリターンを書く必要があります:

車は2年連続で保険に加入しました

このデータベース保険会社の場合、2つの連続した保険がある車を入手する必要があります

言い換えると、レコードのEnddate =(startdate + 1)in他のレコードの車を取得します。

このテーブルでは、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 に答える