Office中国论坛/Access中国论坛

标题: 类似余额问题,但好像更难一些 [打印本页]

作者: ep32    时间: 2008-4-17 17:26
标题: 类似余额问题,但好像更难一些
由表:
时间     数量     类别
一月       5          a
二月      10         a
三月      15         a
一月       3          b
三月       8          b
四月       9          b
做出查询或窗体:
时间     类别      x
一月       a         0
二月       a        10-5
三月       a        (15-10)+(10-5)+0
一月       b         0
三月       b         (8-0)+(0-3)+0
四月       b         (9-8)+(8-0)+(0-3)+0

我的难点不是余额累加,主要是按时间进行字段相减的部分不会做
请高手不吝赐教!比较急!谢谢先!
作者: andymark    时间: 2008-4-17 17:50
急就更应该做一个表,连同相关的测试数据发上来
作者: ep32    时间: 2008-4-17 18:35
表就是这样的,查询我不会做,而且又加了点难度
作者: ep32    时间: 2008-4-17 19:47
关键是08-01-01这样的日期格式如何-1,即变成07-12-01
作者: ep32    时间: 2008-4-17 21:01
很难吗?其实就是按类别和时间,下月的数量-上月的数量的合计,但是按类别和时间列出下月的数量-上月的数量如何做呢?请高手帮忙看看
作者: hi-wzj    时间: 2008-4-18 09:18
您需要的是表述清楚。单从您的字面上:
按类别和时间,下月的数量-上月的数量的合计
按类别和时间列出下月的数量-上月的数量如何做呢?
两个描述就不同。

从表数据来推断。第一个月的算法和后几个月的算法又不同。但在您的表述中看不到这种区别。
作者: ep32    时间: 2008-4-18 10:34
先谢谢回复!可能是没说清楚:因为第一个月之前数量没有值,所以查询后x的值为0。我的思路是:用dateadd按时间-1建立查询a----算出上月,按用查询a和表建立查询b得出按上月查询类别、上月数量,用查询b和表计算时间、x:dsun(数量-上月数量).。肯定是不大对,但又不知应该有什么思路,dsum是字段的值累加,可是上一字段的值减下一字段的值应该怎么考虑哪?要再加上考虑时间、类别就更头痛了。
作者: ep32    时间: 2008-4-18 13:39
自己顶一下
作者: andymark    时间: 2008-4-18 14:17
先算出前后月的差, 再合计就行了
等有空再来试试
作者: hi-wzj    时间: 2008-4-18 15:19
可您以后月份里可都包含有本月的数据呀?
作者: andymark    时间: 2008-4-18 17:15
为使查询更为方便,增加了没数据的月份,数量统一以负数标示,但不影响结果,
作者: kangking    时间: 2008-4-18 20:35
讲一点我的看法:从一楼的举例来看,这个题目应该是很简单的了,你想想计算的结果吧:一月是自己减自己,其它月是当月减一月。这样一分析,问题是不是变得简单了?
作者: andymark    时间: 2008-4-18 20:43
有道理  这样做更简单,也容易实现
作者: andymark    时间: 2008-4-18 21:00
SELECT a.时间, a.数量, a.类别, (select top 1 数量 from 表1 where 表1.类别=a.类别 order by  时间 ) AS 上月数量, (数量-上月数量) AS 余额
FROM 表1 AS a
ORDER BY a.类别, a.时间;
作者: laiguiyou    时间: 2008-4-18 21:45
请问一下版主,这里的top 1是什么意思?
作者: ep32    时间: 2008-4-18 22:12
高手啊!非常感谢,是这个结果,正在细看如何做的,崇拜ing。
回答12#的想法:因为还涉及到没体现的单价字段有可能变动,所以想做成每个时间段计算
我的网络刚才有些毛病,回复不了,现在好了。
作者: andymark    时间: 2008-4-18 22:23
原帖由 laiguiyou 于 2008-4-18 21:45 发表
请问一下版主,这里的top 1是什么意思?


这里的Top 1是指按时间升序取第一笔的数量值
作者: ep32    时间: 2008-4-19 07:54
受教了,再次请教:如果a不是固定的,要是按表中时间的最小值来确定,又该如何写呢?
作者: laiguiyou    时间: 2008-4-19 08:20
原帖由 andymark 于 2008-4-18 22:23 发表


这里的Top 1是指按时间升序取第一笔的数量值


谢谢andymark版主.
作者: andymark    时间: 2008-4-19 09:19
原帖由 ep32 于 2008-4-19 07:54 发表
受教了,再次请教:如果a不是固定的,要是按表中时间的最小值来确定,又该如何写呢?


a 就是表1的别名,  是为了书写方便和简洁,用a 代替表1




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