Sql 如何通过增加天数来选择查询?
我每天使用SQL查询生成Excel:Sql 如何通过增加天数来选择查询?,sql,sql-server-2008,Sql,Sql Server 2008,我每天使用SQL查询生成Excel: SELECT COUNT(res_id) as TotalReservation FROM bup_vw_res_reservation WHERE res_deleted = 0 AND DATEPART(DAY,res_date_start) = 1 每次我想更改日期时,都会执行此查询。要在Excel文件中生成1张工作表,我需要在页面中打开和关闭30个连接。如果我需要为另一家公司制作另一张表,那么我
SELECT COUNT(res_id) as TotalReservation
FROM bup_vw_res_reservation
WHERE res_deleted = 0
AND DATEPART(DAY,res_date_start) = 1
每次我想更改日期时,都会执行此查询。要在Excel文件中生成1张工作表,我需要在页面中打开和关闭30个连接。如果我需要为另一家公司制作另一张表,那么我需要再次执行相同的30查询。页面变得非常慢:(
有没有其他方法可以在一次查询中获得相同的结果?如果您需要总数,可以这样做
DATEPART(DAY, res_date_start) BETWEEN 1 AND 30
如果您需要每天计算每次预订,请执行此操作
SELECT COUNT(res_id) as TotalReservation, DATEPART(DAY,res_date_start)
FROM bup_vw_res_reservation
WHERE res_deleted = 0
GROUP BY DATEPART(DAY,res_date_start)
是,按日期部分(日期、恢复日期和开始)将结果分组,如下所示:
现在,您已经获得了所需的所有结果,您可以迭代它们以生成每行的Excel电子表格。因此,您的意思是必须将最后一行中的数字从
1
更改为2
和3
(依此类推)?你想在一次查询中得到所有这些数字的结果吗?是的,但我不知道怎么做。这就是为什么我多次执行此查询,这使我的网页效率低下且速度缓慢…:(在这种情况下,Dervall的答案是正确的:介于1和30之间或31之间应该可以工作。GROUP BY跳过空结果,我如何也可以看到空结果?(类似于左外连接)这是很难做到的,因为这需要SQL根据不属于查询一部分的内容进行分组,比如SQL中不存在的天数。有一些解决方案,但您需要首先创建某种临时表,其中包含所有感兴趣的天数,将它与您的保留连接起来并应用他是同一组人。
SELECT COUNT(res_id) as TotalReservation, DATEPART(DAY,res_date_start)
FROM bup_vw_res_reservation
WHERE res_deleted = 0
and res_date_start between beginning_of_month and end_of_month
GROUP BY DATEPART(DAY,res_date_start)