![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать запрос?...
Владий © (2003-07-31 09:52:00)
Есть база в Access"е. 1-я таблица - список счетов. 2-я - поступление на счет (дата/сумма/№), 3-я - списание со счетов.
Нужно правильно посчитать - в какой период (сколько дней) какая сумма висела на каждом счете. Можно это сделать запросом? А то вручную делать - неспортивно...
Хорошей Удачи!
Владий // ICQ: 47659886
ЮЮ (2003-08-01 03:21:00) [1]
Р.S. Сформулируй, примерно так:
"Для каждого(или заданного счета) на заданную дату необходимо подчитать сумму по всем приходом до этой даты(включительно) и вычесть сумму по всем расходам до этой даты(включительно)"
При такой формулировке решение становится просто очевидным. Просто не хочется его выводить, не будучи уверенным, что тебе надо именно это, а не "в какой период (сколько дней) какая сумма висела на каждом счете"
ЮЮ (2003-08-01 03:11:00) [2]
>в какой период (сколько дней) какая сумма висела на каждом счете.
Ну и формулировочка! :-)
На такой вопрос существует только один правильный ответ:
"Сумма на счете - это запись во 2-й и она виситвсегда, пока запись существует, начиная с даты, указанной в записи"
Владий (2003-07-31 12:53:00) [3]
Постоянно получались отрицательные значения (хотя их быть не может). попробовал так посмотреть:
SELECT Contracts.NunDog, Got.GDate, Sum(Got.GSum), Transfer.TDate, Sum(Transfer.TSum)
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract
GROUP BY Contracts.NunDog, Got.GDate, Transfer.TDate
ORDER BY Contracts.NunDog, Got.GDate, Transfer.TDate;
И дошло до меня, что т.к. Даты беруться не каждый день, то и расчеты неверны... Как создать условие, чтобы у меня не считалась разница когда не надо? А то получается, что у меня отчисления 15, до которого было несколько поступлений, а разница считается между перыми записями...
Хорошей Удачи!
Владий // ICQ: 47659886
Соловьев (2003-07-31 11:54:00) [4]
> stud © (31.07.03 11:43)
> Только вот вместо "Got.GSum-Transfer.TSum" нужно поставить
> что-то,
> чтоб суммировались все поступления\перечисления на дату...
поэтому нада групировку сначала по дате сделать.
Соловьев (2003-07-31 11:44:00) [5]
SELECT Contracts.NunDog, Transfer.TDate-Got.GDate, SUM(Got.GSum-Transfer.TSum)
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract
GROUP BYTransfer.TDate-Got.GDate, Contracts.NunDog
stud (2003-07-31 11:43:00) [6]
sum(Got.GSum-Transfer.TSum)...
group by Contracts.NunDog, Transfer.TDate-Got.GDate...
Владий (2003-07-31 11:40:00) [7]
Почти получилось, только немного не то выходит, что надо...
пока так:
SELECT Contracts.NunDog, Transfer.TDate-Got.GDate, Got.GSum-Transfer.TSum
FROM (Contracts LEFT JOIN Got ON Contracts.NunDog = Got.Contr) LEFT JOIN Transfer ON Contracts.NunDog = Transfer.Contract;
Только вот вместо "Got.GSum-Transfer.TSum" нужно поставить что-то,
чтоб суммировались все поступления\перечисления на дату...
Хорошей Удачи!
Владий // ICQ: 47659886
alex_bredin (2003-07-31 10:17:00) [8]select scheta.nscheta,
spis.data_spisania-postup.data_postuplenia,
( scheta left join postup on scheta.nscheta=postup.nscheta left join spis on scheta.nscheta=spis.nscheta)select scheta.nscheta,
spis.data_spisania-postup.data_postuplenia,
postup.summa
from (scheta left join postup on scheta.nscheta=postup.nscheta left join spis on scheta.nscheta=spis.nscheta )
alex_bredin (2003-07-31 10:10:00) [9]
select spis.data_spisania-postup.data_postuplenia?