Sql 如何通过增加天数来选择查询?

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个连接。如果我需要为另一家公司制作另一张表,那么我

我每天使用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个连接。如果我需要为另一家公司制作另一张表,那么我需要再次执行相同的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)