Mengambil Data Baris Sebelumnya dalam Penyata SELECT SQL
Banyak pertanyaan SQL memerlukan akses data dari baris sebelumnya untuk pengiraan atau perbandingan. Artikel ini menunjukkan cara untuk mencapainya dalam Microsoft SQL Server 2008 menggunakan fungsi LAG
.
Memanfaatkan Fungsi LAG
Fungsi LAG
mendapatkan semula nilai dengan cekap daripada lajur yang ditentukan dalam baris sebelumnya. Sintaksnya ialah:
<code class="language-sql">LAG(column_name, offset) OVER (ORDER BY order_column)</code>
Berikut ialah pecahan:
column_name
: Lajur yang mengandungi nilai yang anda perlukan.offset
: Bilangan baris untuk diimbangi daripada baris semasa. Offset negatif (mis., -1) mengakses baris sebelumnya.order_column
: Lajur yang mentakrifkan susunan baris untuk pengiraan.Contoh Ilustrasi
Untuk mengira perbezaan antara baris berturut-turut dalam lajur bernama value
, gunakan LAG
seperti berikut:
<code class="language-sql">SELECT value - LAG(value, 1) OVER (ORDER BY Id) AS ValueDifference FROM your_table;</code>
Pertanyaan ini menolak value
daripada baris sebelumnya (diperolehi melalui LAG(value, 1)
) daripada baris semasa value
, menghasilkan perbezaan. ORDER BY Id
memastikan susunan baris yang betul untuk pengiraan.
Mengatasi Jurang dalam Nombor Jujukan
Adalah penting untuk diingat bahawa urutan ID mungkin mengandungi jurang. Merujuk terus Id - 1
untuk mencari baris sebelumnya tidak boleh dipercayai dalam kes sedemikian. Fungsi LAG
, bagaimanapun, mengendalikan jurang ini dengan lancar, memberikan penyelesaian yang mantap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Nilai Baris Sebelumnya dalam Pernyataan SQL SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!