Mengira Perbezaan Antara Baris Berjujukan dalam SQL Server 2005
Panduan ini menunjukkan cara mengira perbezaan antara nilai baris berturut-turut dalam jadual SQL Server 2005. Penyelesaiannya menggunakan gabungan sendiri untuk mencapai pengiraan ini dengan cekap.
Berikut ialah pertanyaan SQL:
<code class="language-sql">SELECT c.rowInt, c.Value, ISNULL(n.Value, 0) - c.Value AS Diff FROM sourceTable AS c LEFT JOIN sourceTable AS n ON n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)</code>
Pertanyaan ini melakukan gabungan kiri sourceTable
(disebut sebagai c
untuk "semasa") dengan dirinya sendiri (disebut sebagai n
untuk "seterusnya"). Syarat bergabung n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)
mencari baris seterusnya berdasarkan lajur rowInt
, memastikan susunan yang betul. ISNULL(n.Value, 0)
mengendalikan kes di mana tiada baris seterusnya, mengelakkan ralat. Perbezaan dikira sebagai n.Value - c.Value
dan dialiaskan sebagai Diff
.
Contoh:
Pertimbangkan sampel ini sourceTable
:
rowInt | Value |
---|---|
2 | 23 |
3 | 45 |
9 | 0 |
17 | 10 |
Keluaran pertanyaan ialah:
rowInt | Value | Diff |
---|---|---|
2 | 23 | 22 |
3 | 45 | -45 |
9 | 0 | 10 |
17 | 10 | 0 |
Lajur Diff
menunjukkan perbezaan antara Value
baris semasa dan Value
baris seterusnya. Ambil perhatian bahawa perbezaan baris terakhir ialah 0 kerana tiada baris berikutnya.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Antara Nilai Baris Berturut-turut dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!