5

我们有orders数据,我们需要Weekly - Custom date Range of 7 Days使用SQL. 该报告将显示每周count的订单。用户将选择一个End Date,我们需要根据该日期创建 12 个 DateRange 单位。例如,用户选择1/24/2013我们需要 12 点/单位为:

Point12 = End Date - 7 Days
Point11 = End Date - 14 Days
Point10 = End Date - 21 Days
Point9  = End Date - 28 Days
.
.
Point1  = End Date - X Days

我们的解决方案

我们计划创建一个临时表,该表将有 12 行。每行都会有类似的数据(我们将计算每个点的开始日期和结束日期):

Point   StartDate           EndDate      TotalOrders
Point12  2013-01-24          2013-01-30   
Point11  2013-01-17          2013-01-23  

在此之后,我们将获得count每一行的订单。

这是解决这个问题的好方法还是可以优化?

编辑:

每周的 DateRange 将是一个Custom date Range of 7 Days.

在此处输入图像描述

4

2 回答 2

1

鉴于这是 SQLServer,我建议使用表变量,而不是临时表。

另一种方法是在 CTE 中生成 12 行作为主查询的一部分,而不是在主查询之前生成所需的行(在表变量/临时表中)作为单独的步骤。这将减少所需的步骤总数,但会使主查询稍微复杂一些。

于 2013-02-12T08:22:07.193 回答
-1

为什么不只使用周作为分组因素?

SELECT
 WEEKOFYEAR(`date`) AS point,
 SUM(orders) AS order
FROM `tablename`
WHERE `date` BETWEEN `startdate` AND `enddate`
GROUP BY point
于 2013-02-12T07:25:20.597 回答