先说一下,用户有二种使用方式和四种支付方式,对于这八种组合采取不同的费率(在费率表中),我如何算得上月所有用户的应交总额呢?
说明一下,比如用户使用方为租借,支付方式为每季支付,则费率160表示的是每季交160,即每月应为53.3 这样的SQL语句该如何写呢?
为了说的更明白一点,这两个SQL语句表的字段我用下面SQL来表示.
txtSQL = " SELECT a.监护用户ID,a.使用方式, a.开通日期,a.支付方式, b.费率, a.支付金额 , a.是否退还押金, b.最大允许欠费额 FROM 财务表 a INNER JOIN 费率表 b ON a.使用方式 = b.使用方式 AND a.支付方式 = b.支付方式 where a.开通日期>'" & CDate(FirstDay) - 31 & "'and a.开通日期<'" & FirstDay & "'"
请大家帮帮忙!!
谢谢!!!!!!!
说明一下,比如用户使用方为租借,支付方式为每季支付,则费率160表示的是每季交160,即每月应为53.3 这样的SQL语句该如何写呢?
为了说的更明白一点,这两个SQL语句表的字段我用下面SQL来表示.
txtSQL = " SELECT a.监护用户ID,a.使用方式, a.开通日期,a.支付方式, b.费率, a.支付金额 , a.是否退还押金, b.最大允许欠费额 FROM 财务表 a INNER JOIN 费率表 b ON a.使用方式 = b.使用方式 AND a.支付方式 = b.支付方式 where a.开通日期>'" & CDate(FirstDay) - 31 & "'and a.开通日期<'" & FirstDay & "'"
请大家帮帮忙!!
谢谢!!!!!!!
建议在添加一个用户表,表中字段:
监护用户ID
使用方式
开通日期
支付方式
费率,
支付金额
是否退还押金
最大允许欠费额
月支付额——创建记录和更改记录时计算并写入此字段的值。
提供两个方案:
一、用VB算出来;
二、用存储过程算出来。
表的结构如下:
财务表:(监护用户姓名,监护用户ID,使用方式,开通日期,停止日期,是否到期,支付方式,支付金额,续费日期,最新缴费,是否退还押金,维护维修费用,备注)
费率表(使用方式,支付方式,费率,最大允许欠费额)
TO:晴明:
如果不用一个SQL语句写出来,则要八个查询语句算出每种费率本月所应交的费用.用的Recordset太多显然很麻烦,并且我这些是算出来的结果仍需要做进一步处理.
TO:of123()
第一,这个数据库并不是我一个人用,牵扯较大.
第二,如果费率和最大允许欠费额也在一个表内的话.试想一下,刚开始没有任何用户的时候如何去设置费率呢?或者因为用户的余额(本来是按月交,现足以按季交),系统要自动调整它的支付方式,这时如果并没有此种费率,不就会出现更新错误吗??
TO:周松
我是个初学者,对存储过程一窍不通,你能告诉我这方面的知识吗?(我用的是SQLSERVER),还有如果用VB算出来,我也要通过SQL才能得到数据库的数据啊(难道真的要八次打开表?)谢谢大家的回答,请继续关注好吗??
CASE b.支付方式
WHEN '每月支付' THEN b.费率
WHEN '每季支付' THEN b.费率/3
WHEN '半年支付' THEN b.费率/6
WHEN '每年支付' THEN b.费率/12
END AS 用户月应交额
FROM 财务表 a INNER JOIN 费率表 b ON a.使用方式 = b.使用方式 AND a.支付方式 = b.支付方式
WHERE ...如不需名细,只要汇总,SUM下就可以了
我还不知道select 语句里还可以放case语句:给我介绍一下好吗?
就是求汇总
公式如下使用方式和支付方式组和共有八种,把所算得的每月应交款和该组和方式下的人数分别求出来后为Monthpay(i)和Number(i),
则求得总和
MoneyCount=0
for i=1 to 8
MoneyCount=MoneyCount+MonthPay(i)*Number(i)
next i
现在我的问题是如何求得这些值呢(monthpay(i)和number(i))
难道每个值都要用一句SQL语句来求吗?(这样是做得到的,但显然不是个好方法)
有什么别的方法吗?
另如果让查询一个字段和统计人数是不是还要group by语句呢?(要不然会出错)