2013-04-10 3 views
0

У меня есть следующая структура таблицы: table = {id, DailyDate, value1, value2} with DailyDate ex. 2000-01-01MySql Запрос на подведение итогов за год или месяц

Как я могу получить итоговый результат сначала в месяц и во-вторых в год для каждого значения?

Я пытался следующее, но он не работает

Select Sum(Value1),Year(DailyDate),Month(DailyDate) 
From table 
Group by Year(DailyDate),Month(DailyDate) 
Order by Year(DailyDate),Month(DailyDate) 

ти

+0

Возможно, вы можете предоставить образцы данных с желаемыми результатами. Ваш вышеуказанный запрос должен суммировать поле value1, группируя по годам и месяцам dailydate. – sgeddes

ответ

2

Если то, что вы просите за это подитоги по годам, попробуйте следующее:

SELECT TheSum, TheYear, COALESCE(TheMonth, CONCAT('Total Year ', TheYear)) 
FROM (
    SELECT 
    SUM(Value1) TheSum, 
    YEAR(DailyDate) AS TheYear, 
    MONTH(DailyDate) AS TheMonth 
    FROM table 
    GROUP BY Year(DailyDate), MONTH(DailyDate) WITH ROLLUP) x 
WHERE TheYear IS NOT NULL 

внутренний запрос использует WITH ROLLUP для генерации промежуточных итогов по месяцам и общей суммы в год. Внешний запрос форматирует год и уменьшает общую сумму.

+0

Ты Эд, ты спас мой день –

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