Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Baris Bersebelahan dalam SQL Server 2008 Tanpa LEAD dan LAG?
Alternatif kepada Fungsi LEAD dan LAG dalam SQL Server 2008
Masalah:
SQL Server 2008 tidak menyokong fungsi LEAD dan LAG. Anda perlu menentukan cara membandingkan baris semasa dengan nilai dalam baris seterusnya.
Penyelesaian:
Satu alternatif ialah melakukan sambung sendiri:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60;
Pertanyaan ini akan mengembalikan baris dengan status baris semasa ialah 1, status baris seterusnya ialah 6 dan perbezaan masa antara dua baris adalah kurang daripada 60 saat.
Jika anda memerlukan padanan minit yang tepat, anda boleh mengubah suai pertanyaan:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60 AND DATEPART(MINUTE, t.MinStartTime) = DATEPART(MINUTE, tnext.MinStartTime);
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Baris Bersebelahan dalam SQL Server 2008 Tanpa LEAD dan LAG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!