Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Perbezaan Antara Nilai Baris Berturut-turut dalam SQL Server 2005?

Bagaimana untuk Mengira Perbezaan Antara Nilai Baris Berturut-turut dalam SQL Server 2005?

Patricia Arquette
Lepaskan: 2025-01-10 15:32:42
asal
144 orang telah melayarinya

How to Calculate the Difference Between Consecutive Row Values in SQL Server 2005?

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

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!

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