Keperluan anda untuk mencipta jadual sementara dengan tarikh antara $startDate hingga $endDate dan pemegang tempat bernilai sifar tambahan lajur memberikan cabaran kerana kemungkinan jurang dalam tarikh sisipan jadual pelanggan.
Kepada mengatasi ini, pertimbangkan pendekatan berikut:
Isytiharkan Julat Pembolehubah: Seperti yang telah anda lakukan, gunakan pengisytiharan berikut untuk menangkap tarikh sisipan minimum dan maksimum:
declare $startDate set $startDate = select min(InsertDate) from customer declare $endDate set $endDate = select max(InsertDate) from customer
Buat Tarikh Dummy Jadual: Menggunakan skema jadual sementara anda, buat jadual dummy dengan tarikh dari $startDate hingga $endDate menggunakan gelung:
CREATE TABLE #dates ( Month DATE, Trials INT DEFAULT 0, Sales INT DEFAULT 0 );
Isi Tarikh Dummy Jadual: Untuk memastikan kesempurnaan, gunakan kursor untuk menggelungkan julat tarikh dari $startDate hingga $endDate, memasukkan setiap tarikh ke dalam jadual dummy:
DECLARE @d DATE = $startDate; WHILE @d <= $endDate BEGIN INSERT INTO #dates (Month) VALUES (@d); SET @d = DATEADD(DAY, 1, @d); END;
Pendekatan ini secara dinamik menjana julat lengkap tarikh dalam julat yang ditentukan, tanpa mengira jurang dalam jadual pelanggan. Anda kemudiannya boleh menggunakan jadual dummy ini sebagai sumber untuk mengisi jadual julat tarikh sementara anda.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Jadual Julat Tarikh Lengkap dalam SQL Server 2000 Walaupun Jurang dalam Data Sumber?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!