[cszsul]:表中有数据: 客户 日期 存储 存储单数 提取 提取单数 A 04.05.01 200.00 1 B 04.05.08 350.00 2 A 04.05.01 140.00 1 A 04.04.02 300.00 1 B 04.05.01 300.00 1 假设客户有很多... 怎样才能实现自动按客户名和月份来统计,如上述的数据按所有客户在5月份数据来统计会为: 客户 所属月份 存储总金额 存储总单数 提取总金额 提取总单数 总金额 剩余单数 A 04.05 200.00 1 140.00 1 60.00 0 B 04.05 300.00 1 350.00 2 -50.00 -1 [ALIGN=right][COLOR=#000066][本贴已被 cszsul 于 2004-7-10 0:23:46 修改过][/COLOR][/ALIGN]
——————————————————————————————————
[lcqhy]:如称上面的表为表A,下面的表为表B,您可以先把表A中的客户(不能重复,用group by 客户)先插入表B中,在从表A中调出每位客户每月的存储数(用语句:select 客户,month(日期),sum(存储) as 存储总金额 group by 客户,month(日期))把调出的数据放在一个中间表中,后根据客户相同把month(日期)和存储数插入到表B中 ,用同样的方法取出存储单数,依据客户和month(日期)相同,把存储总单数插入表B中,提取总金额、提取总单数的方法同上,最后更新表B,总金额=存储总金额-提取总金额,剩余单数=存储总单数-提取总单数.
——————————————————————————————————
[cszsul]:lcqhy : 谢谢你!我开始懂了.
——————————————————————————————————
[look]:[QUOTE][b]以下是引用[i]lcqhy在2004-7-9 16:33:24[/i]的发言:[/b][br]如称上面的表为表A,下面的表为表B,您可以先把表A中的客户(不能重复,用group by 客户)先插入表B中,在从表A中调出每位客户每月的存储数(用语句:select 客户,month(日期),sum(存储) as 存储总金额 group by 客户,month(日期))把调出的数据放在一个中间表中,后根据客户相同把month(日期)和存储数插入到表B中[br],用同样的方法取出存储单数,依据客户和month(日期)相同,把存储总单数插入表B中,提取总金额、提取总单数的方法同上,最后更新表B,总金额=存储总金额-提取总金额,剩余单数=存储总单数-提取总单数.[/QUOTE] 是不是在group by 后应加一个year(日期),不然不同年同月的数据会加在一起? 另我不想通过中间表,用 select 客户, month(日期)as 所属月份,sum (存储) as 存储总金额,sum(存储单数) as 存储总单数,sum(提取金额) as 提取总金额, sum(提取单数) as 提取总单数,sum(提取) as 总金额, sum(存储单数-提取单数) as 剩余单数 是否可以实现上述功能?
——————————————————————————————————
[lcqhy]:楼上的朋友说的有道理,前面还应该加一个显示年份的字段,上面的语句结果是相同的。
上一篇:关于权限的问题