小编典典

按月汇总SQL查询分组

sql

我有一个按小时,每天和每月间隔记录的事务处理数据库(Access
2007)。我想以一种有意义的方式查看它们(而不是按小时存储能耗,而是希望将其存储在2011年1月的所有月份中)。我要操作的表具有以下常规格式:

CustID|CustomerCode|TransactionDate|(Transaction Hour depending on table)|Usage

所以,如果我想拿一张这样的桌子,然后做一个看起来像这样的视图

BillingPeriod|Usage(mWh)
1/2011     |500
2/2011     |600
3/2011     |700
etc

我将如何去做?交易日期可以是任何日期,交易时间可以是1-24。查询本身似乎并不难,类似于以下内容:

SELECT TransactionDate, SUM(Usage)
FROM UsageTable
Where (TransactionDate Between [Some Start Date] AND[Some End Date])
GROUP BY TransactionDate;

问题是格式化。很显然,我无法按交易日期对期望的结果进行分组,我只是编写了它,因此查询在语义上是正确的。也许我可以做些类似的事情

SELECT Mid(TransactionDate,0,2) + Mid(TransactionDate, 6, 4)?

任何帮助,将不胜感激


阅读 204

收藏
2021-04-14

共1个答案

小编典典

看来您需要按月份和年份进行分组。否则,您将合并2010年1月和2011年1月:

SELECT YEAR(TransactionDate), MONTH(TransactionDate), SUM(Usage)
FROM YourTable
WHERE (TransactionDate Between [Some Start Date] AND[Some End Date])
GROUP BY YEAR(TransactionDate), MONTH(TransactionDate)
ORDER BY YEAR(Created), MONTH(Created)

我不知道您的SQL版本是否具有MONTH和YEAR函数,因此您可能必须使用DATEPART。

2021-04-14