0

我有这个论文项目,我应该将我的数据库分组为每年和每月

这是一个字段和数据示例

表名是: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 的数据类型是文本,total_earnings 是访问时的数字。我通过使用日期字符串获得了 date_saved。喜欢.add... = datestring。我不知道它是否正确,所以我可以得到日期。

我正在 reportviewer 上尝试它们,但我不知道在 reportviewer 上做什么,所以我放弃了,只是认为在 datagridview 和按钮上更容易。

4

1 回答 1

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相比有点迟钝。monthmonthnameyear

于 2013-02-15T00:59:57.643 回答