设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 820|回复: 3
打印 上一主题 下一主题

[其它] [讨论]不连续月累计问题

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2005-12-4 07:11:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
[求助]关于有的月中无记录的累计问题
各位老师请指点:
在下面的示意表中,假如要统计5月以来的数据,追加表中有的月份无记录
(铅笔2、5月无记录,文具盒仅1月有记录)
月份     品种       数量        
1               铅笔       100        
3               铅笔       150        
4               铅笔       200
1               文具盒      50

现在要形成下面这样的一个追加表,无记录的月份数量为0 并显示累加数据该如何办?
月份     品种      数量        累计
1        铅笔      100         100
2        铅笔         0           100                                                                                                                                             3        铅笔      150        250
4        铅笔      200         450
5        铅笔        0           450
1        文具盒     50          50
2        文具盒      0          50
3        文具盒      0          50
4        文具盒      0          50
5        文具盒      0          50              谢谢!






[此贴子已经被作者于2005-12-5 11:02:59编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
4#
发表于 2005-12-6 15:58:00 | 只看该作者
只有用VBA了,思路:

1、先将所有月份、品种生成临时表,如你所述;

2、用UPDATE将表中已有的数据UPDATE or 用 union;

3、用自连接来求累计。



示例,代码量也差不多:

SELECT A.品种, A.月份, A.sl, A.sl+NZ((SELECT SUM(sl) FROM
(select 品种, 月份, sum(数量) as sl from (sELECT * FROM LJ union
select 1,'铅笔',0 from lj union
select 2,'铅笔',0 from lj union
select 3,'铅笔',0 from lj union
select 4,'铅笔',0 from lj union
select 5,'铅笔',0 from lj union
select 1,'文具盒',0 from lj union
select 2,'文具盒',0 from lj union
select 3,'文具盒',0 from lj union
select 4,'文具盒',0 from lj union
select 5,'文具盒',0 from lj
) group by  品种, 月份
) b
WHERE A.品种=品种 AND A.月份>月份),0) AS LJ
FROM [select 品种, 月份, sum(数量) as sl from (sELECT * FROM LJ union
select 1,'铅笔',0 from lj union
select 2,'铅笔',0 from lj union
select 3,'铅笔',0 from lj union
select 4,'铅笔',0 from lj union
select 5,'铅笔',0 from lj union
select 1,'文具盒',0 from lj union
select 2,'文具盒',0 from lj union
select 3,'文具盒',0 from lj union
select 4,'文具盒',0 from lj union
select 5,'文具盒',0 from lj
) group by  品种, 月份]. AS a;


[此贴子已经被作者于2005-12-8 11:38:46编辑过]

点击这里给我发消息

3#
 楼主| 发表于 2005-12-6 06:27:00 | 只看该作者
感谢二楼wwwwa朋友的指点,对于菜鸟来说怪复杂的,其实我只是列出了3列类别、品种、月份,实际上是类别、件数、件数累计、项次数、项次数累计、收费、收费累计、月份8列,而行中有十余种,这样算来,每一种12个月,就需要写几百行了。好像以前看过有人先做一个空白表,先把12个月都罗列上去,值设为零,然后把这个不连续月的纪录做个更新查询加进去。但把窗体控件中的数据向表中更新我到学过,但把一个查询表中的数据像一个表中更新该怎样写,我就不知道该怎样写了。例:使用查询向导做一个更新查询:    表1(即空白表)

表      月份    品种     数量

         表1     表1       表1

更新到   此处该怎样写(假如查询表名为“查询表1”)

请再指点!谢谢!





        
2#
发表于 2005-12-5 18:36:00 | 只看该作者
TRY:

SELECT A.品种, A.月份, A.数量, A.数量+NZ((SELECT SUM(数量) FROM
(SELECT *  FROM LJ UNION
SELECT 1,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=1 AND 品种='铅笔') UNION
SELECT 2,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=2 AND 品种='铅笔') UNION  
SELECT 3,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=3 AND 品种='铅笔') UNION
SELECT 4,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=4 AND 品种='铅笔') UNION
SELECT 5,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=5 AND 品种='铅笔') UNION
SELECT 1,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=1 AND 品种='文具盒') UNION
SELECT 2,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=2 AND 品种='文具盒') UNION
SELECT 3,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=3 AND 品种='文具盒') UNION
SELECT 4,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=4 AND 品种='文具盒') UNION
SELECT 5,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=5 AND 品种='文具盒') ORDER BY 品种, 月份)
WHERE A.品种=品种 AND A.月份>月份),0) AS LJ
FROM [SELECT *  FROM LJ UNION
SELECT 1,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=1 AND 品种='铅笔') UNION
SELECT 2,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=2 AND 品种='铅笔') UNION  
SELECT 3,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=3 AND 品种='铅笔') UNION
SELECT 4,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=4 AND 品种='铅笔') UNION
SELECT 5,'铅笔',0 FROM LJ WHERE NOT EXISTS(SELECT 月份 FROM LJ WHERE 月份=5 AND 品种='铅笔') UNION
SELECT 1,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=1 AND 品种='文具盒') UNION
SELECT 2,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=2 AND 品种='文具盒') UNION
SELECT 3,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=3 AND 品种='文具盒') UNION
SELECT 4,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=4 AND 品种='文具盒') UNION
SELECT 5,'文具盒',0 FROM LJ WHERE NOT EXISTS (SELECT 月份 FROM LJ WHERE 月份=5 AND 品种='文具盒') ORDER BY 品种, 月份]. AS A;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 09:28 , Processed in 0.090042 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表