以下是引用yll148在2016-12-7 12:19:52的发言:
15楼的朋友您好,我使用您的句子,没有成功啊?请您再看看,谢谢!
CLOSE DATABASES
* 利用6楼数据
select 编码 as 客户编码,名称 as 客户名称 from g:\dbf\khbm.dbf into curs 客户信息表 READWRITE
select khbm as 客户编码,金额 as 开票金额,开票日期 as 日期 from g:\dbf\kpxx.dbf into curs 开票信息表 READWRITE
select khbm as 客户编码,回款金额,日期 from g:\dbf\hkxx.dbf into curs 回款信息表 READWRITE
select khbm as 客户编码,金额 as 发出金额,日期 from g:\dbf\fcsp.dbf into curs 发出商品表 READWRITE
** 上面的是原来表的结构,为了适应下面查询,我先处理一下你原表
** 你客户信息表 有594个客户,但你“开票信息表,回款信息表,发出商品表”的记录最多才60多,所以很多是 0
** 由于你要统计本月和累计数,所以,统计时间只能按年月,我在统计表上加了个“年月”字段
local nYear,nMonth,S_date,E_date
nYear=2016
nMonth=10
S_date = date(nYear,nMonth,1) &&本月的第1天
E_date = gomonth(S_date,1)-1
&&本月最后1天
select TRANSFORM(nYear)+'年'+TRANSFORM(nMonth)+'月' as 统计年月,a1.客户编码,a1.客户名称, ;
IIF(ISNULL(本月发出),0,本月发出) as 本月发出,IIF(ISNULL(本月开票),0,本月开票) as 本月开票,IIF(ISNULL(本月回款),0,本月回款) as 本月回款, ;
IIF(ISNULL(累计发出),0,累计发出) as 累计发出,IIF(ISNULL(累计开票),0,累计开票) as 累计开票,IIF(ISNULL(累计回款),0,累计回款) as 累计回款 from 客户信息表 a1 ;
left join (select 客户编码,sum(发出金额) as 本月发出 from 发出商品表 where between(日期,S_date,E_date) group by 客户编码)b1 on a1.客户编码=b1.客户编码 ;
left join (select 客户编码,sum(开票金额) as 本月开票 from 开票信息表 where between(日期,S_date,E_date) group by 客户编码)c1 on a1.客户编码=c1.客户编码 ;
left join (select 客户编码,sum(回款金额) as 本月回款 from 回款信息表 where between(日期,S_date,E_date) group by 客户编码)d1 on a1.客户编码=d1.客户编码 ;
left join (select 客户编码,sum(发出金额) as 累计发出 from 发出商品表 where 日期<=E_date group by 客户编码)b2 on a1.客户编码=b2.客户编码 ;
left join (select 客户编码,sum(开票金额) as 累计开票 from 开票信息表 where 日期<=E_date group by 客户编码)c2 on a1.客户编码=c2.客户编码 ;
left join (select 客户编码,sum(回款金额) as 累计回款 from 回款信息表 where 日期<=E_date group by 客户编码)d2 on a1.客户编码=d2.客户编码 ;
order by a1.客户编码
[此贴子已经被作者于2016-12-7 14:43编辑过]