I have a table, let it have My_Table , which has a Created datetime column (in SQL Server), which I am trying to print a report that historically shows how many rows My_Table for months a specific time. Now I know that I can show how many of them were added every month:
SELECT YEAR(MT.Created), MONTH(MT.Created), COUNT(*) AS [Total Added] FROM My_Table MT GROUP BY YEAR(MT.Created), MONTH(MT.Created) ORDER BY YEAR(MT.Created), MONTH(MT.Created)
That would return something like:
YEAR MONTH Total Added ----------------------------- 2009 01 25 2009 02 127 2009 03 241
However, I want to get the total size of the list for a given period (name it what you will, current amount, total amount, historical report):
YEAR MONTH Total Size ----------------------------- -- 2008 12 325 2009 01 350 2009 02 477 2009 03 718
I am trying to do this:
SELECT YEAR(MT.Created) , MONTH(MT.Created) ,( SELECT COUNT(*) FROM My_Table MT_int WHERE MT_int.Created BETWEEN CAST('2009/01/01' AS datetime) AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,MT.Created)+1,0))
However, SQL Server responds with this error:
Msg 8120, Level 16, State 1, Line 1 Column 'My_Table .Created' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
I just know that I am missing something obvious, but, having left and returned, looking at him for a while, I am at a loss. Therefore, if someone were so kind as to indicate that I am missing (or point me to the best way to do this), I would always be grateful.