Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memaparkan Semua Tarikh dalam Julat dan Mengisi Nilai yang Hilang dengan Sifar Menggunakan SQL?

Bagaimana untuk Memaparkan Semua Tarikh dalam Julat dan Mengisi Nilai yang Hilang dengan Sifar Menggunakan SQL?

DDD
DDDasal
2024-12-22 16:47:10645semak imbas

How to Display All Dates in a Range and Fill Missing Values with Zero Using SQL?

Membangunkan Pertanyaan untuk Memaparkan Semua Tarikh dan Mengisi Nilai Yang Hilang dengan Sifar

Apabila bekerja dengan julat tarikh, ia sering menjadi perlu untuk mengambil kira titik data yang hilang. Panduan komprehensif ini menyediakan penyelesaian kepada masalah memaparkan semua tarikh antara dua tarikh tertentu dan memberikan nilai sifar kepada baris yang hilang.

Untuk menangani isu ini, kami boleh memanfaatkan ungkapan jadual biasa (CTE) bernama "d" . CTE ini menjana satu siri tarikh dalam julat yang ditentukan. Kami kemudiannya boleh melakukan cantuman kiri antara CTE dan jadual "temp" asal untuk mendapatkan hasil yang diingini.

Berikut ialah pertanyaan yang diubah suai:

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
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

Pertanyaan yang disemak ini memastikan bahawa semua tiada tarikh ditangkap dan lajur "val" yang sepadan diisi dengan sifar. Pernyataan "OPTION (MAXRECURSION 0)" ditambahkan untuk mengendalikan situasi di mana julat tarikh melebihi 99 hari.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Semua Tarikh dalam Julat dan Mengisi Nilai yang Hilang dengan Sifar Menggunakan SQL?. 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