Office中国论坛/Access中国论坛

标题: 如何做本月最大与上月最大值之差的查询? [打印本页]

作者: leoyan76    时间: 2017-6-12 15:15
标题: 如何做本月最大与上月最大值之差的查询?
想做个抄表查询,资料表是每天记录一笔能耗累积值,如何做个查询上月最大值与本月最大值之差。原始记录以下
2017-5-1    100
2017-5-30    200
2017-6-1    1500
2017-6-31  2200
2017-7-31  4200
2017-8-31  6500
查询结果格式如下

月份               能耗
2017-6月       2000
2017-7月      2000
2017-8月      2300


请教一下各位。

作者: wzl8007    时间: 2017-6-12 16:30
本帖最后由 wzl8007 于 2017-6-12 17:07 编辑

导入access,一步搞定MsgBox DMax("能耗", "表1", "DatePart('m', 日期) = '6'")-DMax("能耗", "表1", "DatePart('m', 日期) = '5'")'6月最大能耗与5月最大能耗的差,其余类推!

作者: roych    时间: 2017-6-12 16:35
查两个max,减一下不就得了么?
  1. select A.月份,B.当月最大-A.当月最大 as 差额 from
  2. (SELECT Max(表1.数量) AS 当月最大, Month([日期]) AS 月份
  3. FROM 表1
  4. GROUP BY Month([日期])) AS A
  5. left join(
  6. SELECT Max(表1.数量) AS 当月最大, Month([日期])-1 AS 月份
  7. FROM 表1
  8. GROUP BY Month([日期])) AS B
  9. on A.月份=B.月份
复制代码
[attach]61575[/attach]
作者: Henry D. Sy    时间: 2017-6-13 08:43
[attach]61578[/attach]

作者: Henry D. Sy    时间: 2017-6-17 10:20
Henry D. Sy 发表于 2017-6-13 08:43

时不时还会提示错误
所以只好用图片
作者: tmtony    时间: 2017-6-17 11:02
周义坤回复的
select format(DateSerial(year(a.月份), Month(a.月份), 1),'yyyy-m月') as 日期,
max(a.能耗)-(select max(b.能耗) from 表1 as b where DateSerial(year(a.月份), Month(a.月份), 1)=DateSerial(year(b.月份), 1+Month(b.月份), 1)) as 结果
from 表1 as a
where format(a.月份,'yyyy-m')<>(select format(min(月份),'yyyy-m') from 表1) group by DateSerial(year(a.月份), Month(a.月份), 1)
作者: 周义坤    时间: 2017-6-17 11:05
试下是不是只能上传图表!

作者: ui    时间: 2017-6-17 11:44
select format(DateSerial(year(a.月份), Month(a.月份), 1),'yyyy-m月') as 日期,
max(a.能耗)-(select max(b.能耗) from 表1 as b where DateSerial(year(a.月份), Month(a.月份), 1)=DateSerial(year(b.月份), 1+Month(b.月份), 1)) as 结果
from 表1 as a
where format(a.月份,'yyyy-m')<>(select format(min(月份),'yyyy-m') from 表1) group by DateSerial(year(a.月份), Month(a.月份), 1)

why




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3