我有一张表,我们将其称为My_Table
,它具有一个Created
datetime列(在SQL Server中),我试图提取一份显示历史数据的报表行在一个特定的时间以月为单位到My_Table
。现在我知道我可以显示有多少人添加每个月有:计算运行总计时出现错误(前几个时段累计)
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)
这将返回类似:
YEAR MONTH Total Added
-----------------------------
2009 01 25
2009 02 127
2009 03 241
不过,我想通过获得总列表大小给定的时间段(称之为您将要做的事;累计总和,历史报告):
YEAR MONTH Total Size
-----------------------------
-- 2008 12 325
2009 01 350
2009 02 477
2009 03 718
我想这一点:
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.
我只是知道我失去了一些东西很明显,但走开和回来后:
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))
-- the last day of the current month
-- (Additional conditions can go here)
) AS [Total added this month]
FROM My_Table MT
WHERE MT.Created > CAST('2009/01/01' AS datetime)
GROUP BY YEAR(MT.Created), MONTH(MT.Created)
ORDER BY YEAR(MT.Created), MONTH(MT.Created)
但是,SQL Server与此错误响应并盯着它一段时间我不知所措。因此,如果有人会指出我在这里失踪(或指出我在做更好的方式)地球我会永远感激。
您能举出样品数据吗?不确定你想要的月份总额是多少?还是一个跑步总数? – gbn 2010-11-05 15:46:52
第2个月是否应包含第1个月的数据? – anivas 2010-11-05 15:51:39
@anivas,@gbn是的,运行总数是我在找的。 – 2010-11-05 16:01:25