Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Fungsi LEAD dan LAG dalam SQL Server 2008?
Ganti untuk Fungsi LEAD LAG dalam SQL Server 2008
Dalam SQL Server 2008, ketidakupayaan untuk menggunakan fungsi LEAD dan LAG menimbulkan cabaran apabila membandingkan baris semasa dengan nilai dalam baris berikutnya. Artikel ini meneroka kaedah alternatif untuk pengguna SQL Server 2008 yang memerlukan fungsi ini.
Menyoal Baris Seterusnya dan Sebelumnya
Matlamatnya adalah untuk mengasingkan baris di mana baris semasa StatusId ialah 1 dan StatusId baris seterusnya ialah 6, dengan kedua-dua baris mempunyai cap masa minit yang sama. Memandangkan fungsi LEAD dan LAG tidak tersedia, kami boleh menggunakan gabungan kendiri.
Pendekatan Sertai Kendiri
Pertanyaan berikut mewujudkan cantuman antara jadual (dirujuk kepada sebagai t) dan jadual "baris seterusnya" (dirujuk sebagai tnext). Syarat untuk menyertai termasuk:
Pertanyaan untuk Padanan Minit Tepat
Jika padanan minit yang tepat diperlukan dan bukannya jarak hanya dalam beberapa minit, pertanyaan boleh diubah suai untuk memasukkan syarat datepart(minit, t.MinStartTime) = datepart(minit, tnext.MinStartTime).
Contoh Pertanyaan
Menggunakan jadual yang disediakan sebagai contoh, berikut adalah kedua-duanya versi pertanyaan:
Versi 1 (dalam minit kedekatan):
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;
Versi 2 (padanan minit tepat):
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);
Output
Keluaran pertanyaan ini akan mendapatkan semula baris yang dikehendaki yang memenuhi kriteria yang ditentukan: Id 6, dengan StatusId ialah 1 dan diikuti dengan Id dengan StatusId 6 pada cap waktu minit yang sama (untuk Versi 2).
Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi LEAD dan LAG dalam SQL Server 2008?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!