如何编写sql程序来计算每月或每年的总会费

时间:2012-05-12 21:27:45

标签: sql sql-server-2000 crystal-reports-8.5

我想计算每月/每年的totaldues(currentamount+anotheramount-receivedamount)以及我的水晶报告中的日期,当前数量,其他金额,收到金额。我有3个包含以下列的表。

TABLE_1

accountno    shipername    shiperaddress   Executivename
001          john          123, London     soma
002          Robi          127, China      soma
003          kal           689,India       paul

Table_2

Executivename  shipername  shiperaddress  accountno  currentamount  anotheramount 
   soma        john        123,london     001        1050          1000
   soma        robi        127,china      002        1100          600
   soma        robi        127,china      002         500          300
   paul        kal         689,india      003         600          400
Shipdate
01/15/2012
01/25/2012
02/27/2012
02/14/2012

TABLE_3

accountno    [Date]        ReceivedAmount    MoneyReceiptNo
   001       1/1/2012      500              G 256412
   002       1/2/2012      200              D 246521
   002       2/5/2012      300              H 254864
   003       3/3/2012      200              D 569823

要做到这一点,我在" flexataclear"

的帮助下做了以下事情

在这里,我必须提到这个存储过程只为totaldues创建:

CREATE PROCEDURE [dbo].[rptexetotaldues] @Executivename varchar(20) 
AS BEGIN
SELECT SUB.ACCOUNTNO, SUM(SUB.DUE) AS TOTALDUE FROM 
  (SELECT ACCOUNTNO
        , CURRENTAMOUNT AS DUE
   FROM TABLE_2
   INNER JOIN TABLE_1 -- WILL ONLY WORK IF ACCOUNTNO IS UNIQUE WITHIN TABLE_1
   ON TABLE_1.ACCOUNTNO = TABLE2.ACCOUNTNO
   WHERE TABLE_1.EXECUTIVENAME = @Executivename
   UNION ALL
   SELECT ACCOUNTNO
        , ANOTHERAMOUNT AS DUE
   FROM TABLE_2
   INNER JOIN TABLE_1 
   ON TABLE_1.ACCOUNTNO = TABLE2.ACCOUNTNO
   WHERE TABLE_1.EXECUTIVENAME = @Executivename
   UNION ALL
   SELECT ACCOUNTNO
        , -RECEIVEDAMOUNT AS DUE -- NOTE NEGATIVE SIGN
   FROM TABLE 3
   INNER JOIN TABLE_1 
   ON TABLE_1.ACCOUNTNO = TABLE3.ACCOUNTNO
   WHERE TABLE_1.EXECUTIVENAME = @Executivename
   ) SUB
GROUP BY SUB.ACCOUNTNO

有人可以通过展示这个存储过程来帮助我吗?

我希望得到与...完全相同的结果。

主管姓名:soma

帐户号码......二月份费用...一月份费用...另一份额外费用...总计费用

001 ......... 0 ........ 1050 ...... 1000 .... 1550

002 ....... 500 ....... 1100 ....... 900 ........ 2000

主管姓名:保罗

... AccountNo ... FebruaryDues ... JanuaryDues AnotherAmount..TotalDues

003 ....... 600 ........ 0 ....... 400 ...... 800

在这里,我想提一下,我想和Shipdate总结一下(currentAmount)。我不知道它的可能与否。如果有人认为它可能会发布它。如果有人认为可以做到通过另一种方式,然后也发布高度赞赏

1 个答案:

答案 0 :(得分:0)

要做每月帐户会费,我认为您需要增加系统的复杂性,添加分配表并允许用户将现金分配到不同的到期金额,否则如果帐户收到付款,您将无法知道到期这是反对的,无法计算它应该清除/减少哪个月的会费。