如果表中的日期不存在,并且表中的值为零时,我们可以在SQL中生成自动日期吗



我有一个名为final_registration的表,我在其中存储注册数据,下面是我的表:

*---------------------------------------------------------------*
| id | event_id |   Name  |   booking_date      | ticket_status |
*---------------------------------------------------------------*
| 1  |    101   | Sandeep | 2018-11-30 15:43:24 |    active     | 
| 2  |    101   | Jagveer | 2018-12-01 18:44:20 |    active     |
| 3  |    101   | Sudhir  | 2018-12-01 20:34:20 |    active     |
| 4  |    101   | Aman    | 2018-12-03 18:44:20 |    active     |
*---------------------------------------------------------------*

我正在运行以下输出查询:

SELECT COUNT(id), booking_date 
FROM final_registration 
WHERE `event_id` = 101 
AND `booking_date` >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
AND ticket_status='active' 
GROUP BY DATE_FORMAT(`booking_date`, '%d-%b');

输出显示:

*--------------------------*
| count(id) | booking_date |
*--------------------------*
|     2     |  2018-12-01  |
|     1     |  2018-12-03  |
*--------------------------*

但我不想这样,我想从查询中得到以下输出:

*--------------------------*
| count(id) | booking_date |
*--------------------------*
|     2     |  2018-12-01  |
|     0     |  2018-12-02  |
|     1     |  2018-12-03  |
|     0     |  2018-12-04  |
*--------------------------*

注:今天是2018年12月4日,所以在这里,我使用的是当前日期。

那么,如果我的表值中没有日期,我如何生成自动日期呢?

使用从当前日期开始的循环,然后在存在值的情况下填充表。

显然,你必须考虑停止循环,比如检查您表格的最后一个条目具有循环的当前日期

好吧,正如@jarlh上面所说,你最好得到一个日历表,然后把它加入你的表中。网上有很多东西可以买到。我可以建议的第二种选择是,除非你想创建一个表格,否则就是写一个excel表格,在表格的开头有日期和一个简单的id,下一列可以是你自己选择的格式的实际日期。然后,右键单击ssms对象资源管理器上的数据库名称并使用导入数据。你不必创建表格,你可以将excel文件导入数据库。那就加入桌子吧。

最新更新