2012-06-26 58 views
0

我可以使用下面的代碼檢索特定一週中所有項目的總額/總銷售額。MySql在特定周內的返回日期範圍

select week(real_pur_date) as week, itemcode, sum(quantity) 
from sales 
where week(real_pur_date) = week(20120620) 
group by itemcode; 

輸出是:

+------+----------+---------------+ 
| week | itemcode | sum(quantity) | 
+------+----------+---------------+ 
| 25 | KB001 |   11 | 
| 25 | KB002 |    2 | 
| 25 | KB003 |    3 | 
+------+----------+---------------+ 

這是我想要的東西

的問題是我如何可以查詢MySQL來返回日期的範圍在25個星期返回到結果表?
例如,
1.第24周的日期範圍爲10-06-2012至16-06-2012。
2.第25周的日期範圍是17-06-2012至23-06-2012。

在此先感謝。

+0

您是期待本週的*實際*邊界日期,還是本週內第一次和最後一次銷售的日期?換句話說,如果17-06-2012沒有銷售,那麼你是否期待「18-06-2012」和「23-06-2012」? – RandomSeed

+0

@YaK我期待本週的實際邊界日期 – Boon

+0

在你的應用程序中管理這個,而不是在mysql – fancyPants

回答

1

我不是MySQL傢伙,所以我不得不嘗試從SQL Server功能轉換。但是,基本的數學就在那裏。我會讓你決定你想如何傳遞或計算@YEARSTART和@YEAREND。

DECLARE @YEARSTART datetime, @YEAREND datatime 
SET @YEARSTART='1/1/2012' 
SET @YEAREND = '12/31/2012' 

SELECT A.week, CASE WHEN (@YEARSTART + INTERVAL (8-DAYOFWEEK(@STARTYEAR)+(week-2)*7) DAY) < @YEARSTART 
       THEN @YEARSTART 
       ELSE (@YEARSTART + INTERVAL (8-DAYOFWEEK(@STARTYEAR)+(week-2)*7) DAY) 
       END AS WeekStart, 
       CASE WHEN (@YEARSTART + INTERVAL (7-DAYOFWEEK(@STARTYEAR)+(week-1)*7) DAY) > @YEAREND 
       THEN @YEAREND 
       ELSE (@YEARSTART + INTERVAL (7-DAYOFWEEK(@STARTYEAR)+(week-1)*7) DAY) 
       END AS WeekEnd, 
     A.itemcode, A.SumQty 
FROM 
(
select week(real_pur_date) as week, itemcode, sum(quantity) AS SumQty 
from sales 
where week(real_pur_date) = week(20120620) 
group by itemcode 
) AS A 
+0

@tombom,我同意你在你的應用程序中管理它,但我想提供一個SQL解決方案,以防萬一Gǎgǎ沒有這個選擇。另外,挑戰在那裏。很抱歉聽到你對這個主題有如此強烈的意見。 –

+0

謝謝你們的答覆和意見。我會試試這兩種解決方案。 – Boon

+0

@tombom,我完全理解。我最近也有過很多次。感謝您的支持。 –