2012-05-12 3 views
0

Я хочу рассчитать totaldues(currentamount+anotheramount-receivedamount) ежемесячно/ежегодно вместе с датой, текущим месяцем, anotheramount, полученным в моем отчете о кристалле. У меня есть 3 таблицы, содержащие следующие столбцы.Как написать sql-процедуру для расчета сумм взносов ежемесячно или ежегодно

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 

Для этого я сделал следующее по помощи "bendataclear"

Здесь я должен отметить, что эта хранимая процедура создана только для 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 

Может ли кто-нибудь помочь мне, показывая эту хранимую процедуру?

Я хочу, чтобы получить результат в точности как ..

Executive Имя: сомы

Номер счета ... FebruaryDues ... JanuaryDues..AnotherAmount..TotalDues

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

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

Исполнительное название: paul

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

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

Здесь я хочу упомянуть, что я хочу суммировать (currentAmount) от Shipdate.i, не знаю, как это возможно или нет. Если кто-то подумает, что это возможно, то опубликуйте it.or if кто-то думает, что это может быть сделано по-другому, а затем также высоко оценили

+6

Если это срочно, может быть хорошей идеей сделать вопрос легким для чтения, чтобы люди действительно могли его прочитать. Используйте инструменты форматирования, убедитесь, что ваш вопрос ясен. Опубликуйте то, что вы пробовали. Если вы получаете ошибки, отправьте эти ошибки. –

+1

Это также похоже на дубликат. Но я не знаю, как искать повторяющиеся вопросы. –

+0

Возможный дубликат [Как создать процедуру sql для расчета сумм взносов ежемесячно, ежегодно) (http://stackoverflow.com/questions/10565446/how-to-create-sql-procedure-for-calculating-total-dues-monthly -yearly) и [Как создать процедуру sql для расчета Total dues] (http://stackoverflow.com/questions/10558484/how-to-create-sql-procedure-for-calculating-total-dues) –

ответ

0

Чтобы сделать ежемесячные сборы по счетам, я думаю, вам нужно будет увеличить сложность системы, добавив таблицу распределений и позволяющую пользователям распределять денежные средства на разные надлежащие суммы , в противном случае, если учетная запись будет получать платеж, вы не будете знать, из-за которой это противоречит, и не может рассчитать, какие месячные взносы должны очищать/уменьшать.

+0

Большое спасибо за сообщение. В любом случае, вы можете дать мне пример, связанный с этой проблемой – Joy

 Смежные вопросы

  • Нет связанных вопросов^_^