2012-06-26 3 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 в случае, если Boon Gǎgǎ не было этого варианта. Кроме того, проблема была там. Извините, что у вас есть такие сильные мнения по этому вопросу. –

+0

Спасибо вам обоим за ваш ответ и мнения. Я дам ему попробовать оба решения. – Boon

+0

@tombom, я полностью понимаю. У меня было слишком много таких дней в последнее время. Спасибо за поддержку. –

Смежные вопросы