aravindnass Ответов: 5

запрос для поиска баланса кредита и дебета (в mysql)


покрытием haiii...

Я застрял с запросом отчета о сделке (балансового отчета )...

Я хочу рассчитать баланс кредита и дебета клиента...


Не могли бы вы помочь мне разработать запрос для расчета баланса ..(в mysql) .вот нормальная структура..
                                                                      [ opening Balance - 0.00 ]

Transaction Date      Transaction Description   Debit     Credit          balance
---------------      ----------------------    -----     -----            --------
01/04/2012          maintance charge          2800       0.00              -2,800.00

01/04/2012           water charge             750.00     0.00              -3,550.00

16/04/2012           (...)                     0.00      8,400.00           4,850.00     

23/04/2013           (..)                      0.00      8,400.00           13,250.00




пожалуйста, дайте запрос, чтобы найти баланс....

Я думаю, что уравнение [(кредит - Дебет) + предыдущее.Баланс]

[edit]добавлен блок кода - OriginalGriff[/edit]

Irbaz Haider Hashmi

Что вы уже сделали? Обеспечьте свою работу.
Также предоставьте структуру таблицы.

aravindnass

Я просто пытался, но ... потерпел неудачу ... вот мой запрос

Выберите Q.`кредит`,д.`дебет`
,@бал:=если(@идентификатор=Щ.`ИД`, @бал + (вопрос.кредит - вопрос.дебетовой), вопрос.кредит - вопрос.дебет), остаток
От сделки как Q

5 Ответов

Рейтинг:
2

Member 11224720

you will get the last Balance by using this query

SELECT balance FROM Table name ORDER  BY date DESC LIMIT  1

Balance = (last Previous Balance + Credit) - Debit

than your query for insertion


Member 13571003

Я не понимаю,что значит предыдущий баланс ?Пожалуйста, дайте мне ответ.

Рейтинг:
1

Member 13521806

Не уверен, что это все еще открыто. Но вы можете попробовать запрос типа:

select distinct 
c.retailer_id as 'retailer',
c.created as 'date',
sum(c.item_total)as 'sales_total',
COALESCE(sum(d.amount),0) as 'bill_received',
(sum(c.item_total)-COALESCE(sum(d.amount),0)) as 'balance'

from `retailer_inventory` c
left join `retailer_payment` d

on c.retailer_id = d.retailer_id
and c.created =d.payment_date

where c.retailer_id=17

group by c.retailer_id,date

order by c.retailer_id,date asc


Richard MacCutchan

На пять лет опоздал.

Member 13521806

Я никогда не надеялся, что эта проблема будет ждать моего решения в течение 5 лет :). Просто сегодня я работал над подобной проблемой. Попробовал Гугл, получил такой результат. Затем придумайте решение и в ожидании, что оно может кому-то когда-нибудь помочь, я разместил его, чтобы получить полный ответ на оригинальный вопрос!!!

CHill60

COALESCE(sum(d.amount),0) вернет 0, если какое-либо значение равно null. Конечно, вы просто хотите рассматривать нулевые значения как ноль, а не всю сумму.
sum(ISNULL(d.amount,0))

Member 10660969

Дата транзакции описание транзакции Дебет Кредит баланс BalType
--------------- ---------------------- ----- ----- -------- -------
01/04/2012 заряда aintance 2800 .00 0.00 -2,800.00 ЧР
01/04/2012 плата за воду 750.00 0.00 -3.550.00 Cr
16/04/2012 (...) 0.00 8,400.00 4,850.00 Д-Р
23/04/2013 (..) 0.00 8,400.00 13,250.00 Д-Р

Пожалуйста, переведите добавить новую колом
Тип Баланса
если баланс отрицательный то Cr else Dr

Рейтинг:
0

Maciej Los

Вы можете посмотреть здесь: http://www.tutorialspoint.com/mysql/mysql-sum-function.htm[^]

--total balance
SELECT (SUM(debit)*-1) + SUM(credit) AS TotalBalance
FROM Trasaction

--daily balance
SELECT TransDate, (SUM(debit)*-1) + SUM(credit) AS DailyBalance
FROM Trasaction
GROUP BY TransDate

--period of time balance
SELECT (SUM(debit)*-1) + SUM(credit) AS PeriodBalace
FROM Trasaction
WHERE TransDate BETWEEN CURDATE() AND ADDDATE(CURDATE() INTERVAL -30 DAY)

--customer balance
SELECT CustId, (SUM(debit)*-1) + SUM(credit) AS CustomerBalance
FROM Trasaction
GROUP BY CustId


aravindnass

Спасибо за ваш ответ ..Но мне нужен отдельный баланс каждого клиента...
Я думаю, что уравнение [(кредит - Дебет) + предыдущее.Баланс] найти ..но я не могу написать запрос... пожалуйста, помогите мне...

Maciej Los

Взгляните на последний пример...

aravindnass

получение ошибки здесь:
Код Ошибки: 1064
У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса для использования рядом ') как DailyBalace
Из которых
Группа по CustId
Предел 0, 1000' на линии 1

Maciej Los

Извините, уберите последнее ")"

Рейтинг:
0

Member 10743924

Следующий код сработал для меня
он имеет принесенный баланс

WITH tempDebitCredit AS (
Select 0 As Details_ID, null As Creation_Date, null As Reference_ID, 'Brought Forward' As Transaction_Kind, null As Amount_Debit, null As Amount_Credit, isNull(Sum(Amount_Debit - Amount_Credit), 0) 'diff'
From _YourTable_Name
where Account_ID = @Account_ID
And Creation_Date < @Query_Start_Date
Union All
SELECT a.Details_ID, a.Creation_Date, a.Reference_ID, a.Transaction_Kind, a.Amount_Debit, a.Amount_Credit, a.Amount_Debit - a.Amount_Credit 'diff'
FROM _YourTable_Name a
where Account_ID = @Account_ID
And Creation_Date >= @Query_Start_Date And Creation_Date <= @Query_End_Date
)

SELECT a.Details_ID, a.Creation_Date, a.Reference_ID, a.Transaction_Kind, 
a.Amount_Debit, a.Amount_Credit, SUM(b.diff) 'Balance'
FROM   tempDebitCredit a, tempDebitCredit b
WHERE b.Details_ID <= a.Details_ID
GROUP BY a.Details_ID, a.Creation_Date, a.Reference_ID, a.Transaction_Kind, 
a.Amount_Debit, a.Amount_Credit
Order By a.Details_ID Desc


Протестировано на Microsoft SQL Server