Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Meniru Fungsi SQL LEAD dan LAG dalam SQL Server 2008?

Bagaimana untuk Meniru Fungsi SQL LEAD dan LAG dalam SQL Server 2008?

Patricia Arquette
Lepaskan: 2024-12-17 22:27:11
asal
904 orang telah melayarinya

How to Replicate SQL LEAD and LAG Functionality in SQL Server 2008?

Alternatif kepada Fungsi SQL LEAD dan LAG dalam SQL Server 2008

Dalam SQL Server 2008, fungsi LEAD dan LAG tidak tersedia, yang boleh menimbulkan cabaran apabila membandingkan nilai antara baris berturut-turut. Panduan ini membentangkan pendekatan alternatif untuk mencapai kefungsian yang serupa.

Pernyataan Masalah

Matlamatnya adalah untuk mengenal pasti baris di mana baris semasa mempunyai StatusId 1 dan baris berikutnya mempunyai StatusId sebanyak 6, dengan masa dalam minit yang sama. Sebagai contoh, dalam jadual yang disediakan, kami ingin mendapatkan Id baris 6 kerana Id baris 6 mempunyai StatusId 1 dan baris Id 7 mempunyai StatusId 6 dan masanya pada dasarnya adalah sama: 2014-02-19 06: 11.

Penyelesaian 1: Self-Join

Satu pendekatan ialah self-join:

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;
Salin selepas log masuk

Pertanyaan ini mengembalikan baris di mana Id baris semasa kurang satu daripada Id baris seterusnya , StatusId ialah 1 untuk baris semasa, 6 untuk baris seterusnya dan perbezaan masa di antara mereka adalah dalam 60 saat.

Penyelesaian 2: Minit Kalendar Sama

Jika anda memerlukan masa dalam minit kalendar yang sama, anda boleh mengubah suai pertanyaan seperti berikut:

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);
Salin selepas log masuk

Pertanyaan ini juga menyemak sama ada minit kedua-dua baris adalah sama, memastikan ia tergolong dalam baris yang sama minit kalendar.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi SQL LEAD dan LAG dalam SQL Server 2008?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan