2012-06-27 5 views
2

Я хочу получить результат за последние 3 месяца. и это то, что я до сих пор создать:Как выбрать 3 последних месяца?

SELECT 
    year([date]) as tahun, 
    month([date]) as bulan, 
    [type] as tipe, 
    SUM([net qty]) total_karton, 
    CAST(SUM([cm1 (rp)]) as decimal) as total_uang 
FROM 
    tbl_weeklyflash_ID 
GROUP BY 
    year([date]), 
    month([date]), 
    [type] 
ORDER BY 
    month([date]), [type] 

но этот запрос показывает все месяцы, как получить только 3 последних месяцев?

+0

ли вы имеете в виду всегда октябрь, ноябрь и декабрь? Или просто «3 последних месяца»? –

+0

только 3 последних месяца :) – blankon91

ответ

3

Просто добавьте пункт WHERE, что-то вроде:

WHERE 
    DATEDIFF(month,[date],CURRENT_TIMESTAMP) between 0 and 2 --May have to adjust the end value on this 

2 даст вам текущий месяц и предыдущий 2. Если вы хотите 3 целые месяца данных, возможно, потребуется настроить конец стоимость.

DATEDIFF всегда дает количество переходов, которые произошли, для указанной даты. Таким образом, в приведенном выше подсчете количество раз, которое в месяце изменилось между date (не большим именем столбца, BTW) и текущей датой.

+0

@Darmien_The_Unbeliever спасибо, это работает. Теперь я понимаю. спасибо за ваш ответ и объяснение. – blankon91

1

попробовать это:

WHERE month([date]) between month(getdate()) -3 and month(getdate()) 
+0

Благодарю вас за ответ, он работает, но мне нужно настроить '3' на' 2', чтобы я мог получить то, что хочу. благодаря :) – blankon91

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