Menjana Julat Tarikh Komprehensif dengan Data Populasi
Dalam pangkalan data, selalunya perlu untuk mendapatkan semula data dalam julat tarikh tertentu. Walau bagaimanapun, apabila data tiada untuk tarikh tertentu, adalah berguna untuk memaparkan sifar dan bukannya membiarkan lajur kosong. Ini memastikan bahawa keseluruhan julat tarikh diwakili, memberikan paparan data yang lebih komprehensif.
Masalah:
Anda mempunyai jadual yang mengandungi data tarikh dan nilai serta keperluan untuk mendapatkan semula semua tarikh dalam julat yang ditentukan. Jika tiada baris untuk tarikh tertentu, anda mahu memaparkan sifar untuk semua lajur.
Penyelesaian:
Ini boleh dicapai dengan membuat set tarikh menggunakan ungkapan jadual biasa rekursif (CTE) dan kemudian melakukan gabungan kiri dengan jadual data sedia ada. CTE menjana satu siri tarikh dalam julat yang ditentukan. Gabungan kiri sepadan dengan tarikh yang dijana dengan baris sedia ada, mengisi sebarang nilai yang hilang dengan sifar menggunakan fungsi ISNULL().
;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)
Pilihan MAXRECURSION menentukan bilangan maksimum lelaran rekursif yang dibenarkan. Dalam kes ini, memandangkan julat tarikh adalah kecil (15 hari), kami boleh menetapkannya kepada 0 untuk membenarkan lelaran tanpa had.
Dengan melaksanakan pertanyaan ini, anda akan memperoleh set data lengkap yang merangkumi semua tarikh dalam tempoh yang ditentukan julat. Mana-mana tarikh yang hilang akan diisi dengan sifar, memberikan gambaran menyeluruh data.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh Komprehensif dengan Nilai Sifar Populasi untuk Data yang Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!