У меня есть таблица:группы по на колонке и получить сумму этого столбца
------------------------------------
ReportDate | DAGName | MailboxCount
------------------------------------
Существует много записей в этой таблице. Я должен получить сумму почтового ящика каждого имени dagName в первый день каждого месяца в течение определенного года.
------------------------------------
ReportDate | DAGName | MailboxCount
------------------------------------
01-01-2012 | abc | 25
01-02-2012 | xyz | 55
01-02-2012 | abc | 125
01-03-2012 | lmn | 225
01-01-2012 | ghf | 325
01-03-2012 | kil | 525
11-03-2012 | kil | 525
21-03-2012 | kil | 625
10-05-2012 | jil | 225
20-11-2012 | kil | 1525
04-03-2012 | Mil | 5025
Так что я хочу, как результат
---------------------------------
Month Name | Count
---------------------------------
January | 350
Ferbuary | 150
March | 850
Мой запрос
SELECT SUM(MailboxCount) AS Count,DagName
,MONTH(CAST(ReportDate AS DATETIME))
,DATENAME(month, ReportDate) AS 'Month Name'
FROM MailboxDatabase
WHERE (CONVERT(VARCHAR, CONVERT(VARCHAR(10), [ReportDate], 103), 103)
IN ('01/01/'+ @year,'01/02/'+ @year,
'01/03/'+ @year,'01/04/'+ @year,
'01/05/'+ @year,'01/06/'+ @year,
'01/07/'+ @year,'01/08/'+ @year,
'01/09/'+ @year,'01/10/'+ @year,
'01/11/'+ @year,'01/12/'+ @year
))
GROUP BY MONTH(CAST(ReportDate AS DATETIME)),DATENAME(month, ReportDate),DagName
ORDER BY 2
Я хорошо, если некоторые дополнительные колонки, как идет с моим запросом. Но это не дает мне правильный результат. Любая помощь ??
Удалить DagName, это не часть вашей группировки, reportDate - это какой тип не является датой. –
НЕ ВСЕГДА используйте 'VARCHAR', не указав длину, или она вернется и преследует вас. –
Нет, это не так, как дата не первый день месяца .... – ankur