我有一個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