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
Patricia Arquetteasal
2024-12-17 22:27:11909semak imbas

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;

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);

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!

Kenyataan:
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