を設定し、私のテーブルスキーマである: -のSQL SERVER:各IDに対して1つの結果、複数の結果では、以下
Appointments
-------------------------------------------------
|apptID| persID| apptDate| apptCode| apptConfirm|
-------------------------------------------------
上記の表は、これまでに作ったすべての予定を記録します。 apptCodeが "200"の場合、その人の前回の予定を取得する結果セットを取得したいと思います。
私は上記のクエリは、私の前の予定を取得しますが、私は唯一の私が知らないapptCode「200」を持つ1
に先約である1件の結果をしたい以下のクエリに
WITH selected_person AS
(SELECT persID, apptDate FROM Appointments WHERE apptCode IN ('200'))
SELECT apptID, apptDate, apptCode
FROM selected_person sp LEFT JOIN Appointments ap ON sp.persID = ap.persID
WHERE ap.apptDate < sp.apptDate
を試してみましたこのシナリオでLIMITがどのように役立つか 任意のポインタが本当に、あなたは窓関数を各先約にインデックスを与え、その後、第一1を取ることができ、このような何か
おかげ
をグループ 'によってsp.persID'、MAX(apptDate)を取得し、apptDate descで注文します。 – FDavidov
SQL Server 2012で導入された遅れ/進み関数を調べることができます。もう1つの方法は、行番号を使用してnに戻ることです。 –