我有这个论文项目,我应该将我的数据库分组为年度和月度
这是字段和数据样本
表名是:tblsell
Date_Saved | Total Price
2-5-2013 5
2-5-2013 10
2-5-2013 5
2-6-2013 6
2-7-2013 3
2-8-2013 2
3-1-2013 6
3-2-2013 11
3-3-2013 2
3-5-2014 5
3-6-2014 4
现在,我打算创建2个按钮,这样当我点击每月按钮时,这应显示在datagridview上
Date_saved | Total_Earnings
2-2013 or february 2013 31
3-2013 or march 2013 19
3-2014 or march 2014 9
然后,如果我点击年度按钮,则应显示在datagridview
上Date_saved | Total_earnings
2013 50
2014 9
我不确定我是否说明了正确的输出,但至少接近该输出应该这样做。
date_saved的数据类型为text,total_earnings为访问时的数字。我使用datestring获取date_saved。比如.add... = datestring
。我不知道它是否正确所以我可以得到日期。
我正在使用reportviewer尝试它们,但我不知道如何在reportviewer上做什么,所以我放弃了,只是想在datagridview和按钮上更容易。
答案 0 :(得分:2)
如果您希望将其作为数据网格,那么这些是您的两个查询选项
将您的基本表格Table1
设置为此
您可以像这样创建一个新查询
生成此代码。
SELECT MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]) AS [Year], Sum(Table1.[Total Price]) AS [SumOfTotal Price]
FROM Table1
GROUP BY MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]);
并产生这些结果。
分组是这里的关键。有几种方法可以分组,我在那里做的就是让你的数据网格看起来“格式化”,但比
这样的方法慢SELECT DATEADD('m', DATEDIFF('m',0,date_saved), 0) as [Month], sum([total price]) as [Month's Total Price]
FROM Table1
group by DATEADD('m', DATEDIFF('m',0,date_saved), 0)
这在功能上是等效的,但由于它不进行任何数据类型转换,因此运行速度更快。此外,它还有一个额外的好处,您现在可以在报表的文本框中设置日期格式,但您感觉并且不会决定查询时间。缺点是dateadd
/ datediff
方法与使用month
,monthname
,year
函数相比有点迟钝。