Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisi Tarikh Hilang dengan Nilai Sifar dalam Pertanyaan SQL?

Bagaimana untuk Mengisi Tarikh Hilang dengan Nilai Sifar dalam Pertanyaan SQL?

Mary-Kate Olsen
Lepaskan: 2024-12-17 11:08:25
asal
418 orang telah melayarinya

How to Fill Missing Dates with Zero Values in SQL Queries?

Dapatkan Tarikh Hilang dengan Nilai Sifar antara Julat Tarikh

Pertanyaan asal mendapatkan data antara dua tarikh, tetapi ia mengecualikan tarikh yang tiada. Untuk memasukkan tarikh yang tiada dan menetapkan nilai sifar untuk data yang hilang, kami boleh menggunakan teknik yang dipanggil "pembenderaan tarikh."

Membenderakan Tarikh Hilang

Jadual biasa rekursif ungkapan (CTE) boleh digunakan untuk menjana satu siri tarikh dalam julat yang ditentukan. CTE, bernama d, bermula dengan tarikh pertama julat dan secara rekursif menambah satu hari sehingga ia mencapai tarikh tamat.

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
Salin selepas log masuk

Menyertai dengan Data Sedia Ada

Seterusnya, kami melakukan cantuman luar kiri antara CTE d dan suhu jadual data asal (t) untuk mendapatkan semula data sedia ada untuk setiap tarikh. Jika tarikh wujud dalam temp, nilai digunakan; jika tidak, kami menggantikan sifar.

select t.ID, d.date CDate, isnull(t.val, 0) val
from d
left join temp t
       on t.CDate = d.date
order by d.date
OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
Salin selepas log masuk

Nota tentang MAXRECURSION

Klausa OPTION (MAXRECURSION 0) menghalang pertanyaan daripada gagal disebabkan ulangan yang berlebihan jika julat tarikh terlalu besar. Anda boleh melaraskan nilai agar sesuai dengan julat data khusus anda.

Dengan menggunakan teknik ini, kami boleh mendapatkan semua tarikh antara dua tarikh, termasuk tarikh yang hilang, sambil memastikan nilai yang hilang diwakili sebagai sifar.

Atas ialah kandungan terperinci Bagaimana untuk Mengisi Tarikh Hilang dengan Nilai Sifar dalam Pertanyaan SQL?. 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