我有一个SQL查询计算两个总和的报价。此报价应按周计算。因此使用Datepart('ww', Date, 2, 2)
来获取日历周。查询按日历周分组/问题:日期扩展超过一年
这个查询在2014年工作正常,但现在我面临一个问题。
该用户的动产与和日期的形式日期选取器,然后在where子句中使用,只选择相关记录。
如果他们选择了从过去的一年中(例如2014)日期和最新从今年我的查询显示irrelvant数据,因为它不cosinder今年刚刚日历周。
那么,如何通过日历周组,只选择从正确的年份记录。
SELECT DatePart('ww',Date,2,2) AS WEEK,
Year(Workload_Date) AS [YEAR],
(SUM(Value1)+SUM(Value2))AS [Total1],
(SUM(Value3)+SUM(Value4)) AS [Total2],
((SUM(Value1)+SUM(Value2))/(SUM(Value3)+SUM(Value4))) AS [Quote]
FROM tbl
WHERE DatePart('ww',Date,2,2) Between DatePart('ww',FromDatePickerField,2,2) And DatePart('ww',ToDatePickerField,2,2)
GROUP BY DatePart('ww',Date,2,2), Year(Date)
ORDER BY Year(Date), DatePart('ww',Date,2,2);
该表格每天包含一条记录。
Date | Value1 | Value2 | Value3 | Value4 |
01.01.2014 | 4 | 3 | 2 | 3 |
02.01.2014 | 4 | 3 | 9 | 3 |
03.01.2014 | 4 | 3 | 4 | 1 |
04.01.2014 | 4 | 3 | 1 | 3 |
...
01.01.2015 | 4 | 3 | 6 | 3 |
02.01.2015 | 4 | 3 | 3 | 7 |
感谢您的答复。我还没有完全理解这个逻辑。比方说,用户选择从星期三开始。此查询是否会从星期一开始选择所有记录?与迄今为止一样的东西。用户再次选择星期三,将记录直到星期天被选中? – blckbird 2015-02-05 15:40:27
你说得对。您可以限制这些情况下的数据虽然..尝试更新的代码。 – SoulTrain 2015-02-05 15:44:49
在dateadd和datepart中由于'dw'和'dd'出现错误。需要将'dw'改为''w''和'dd'为''d'' – blckbird 2015-02-05 16:05:23