![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Срок задолженности [fb 1.5]
makz © (2007-01-10 07:21:00)Есть таблица:
CREATE TABLE DOK (
ID INTEGER NOT NULL,
ID_ST INTEGER NOT NULL,
SUMM DECIMAL(15,2) NOT NULL,
DOKDATE DATE NOT NULL
);
В нее добавляются записи с SUMM > 0 и < 0. Вычисляются суммы по разным ST_ID:
select sum(SUMM) from DOK
group by ID_ST
(ID_ST - внешний ключ). Для вычисления срока в течение которого sum(SUMM) <0 используется ХП. Есть ли возможность обойтись без ХП, одним запросом? Прошу прощения, если невнятно задал вопрос, долго уже мучаюсь :).
unknown (2007-01-11 12:09:00) [21]
> makz © (11.01.07 11:58) [10]
А чем, собственно, хп не устраивает?
makz (2007-01-11 11:58:00) [22]может сделать что-ли вычислимое поле или вью с нарастаюшими итогами?
Sergey13 (2007-01-11 11:15:00) [23]> [8] makz © (11.01.07 11:09)
Тогда без ХП вряд ли получится.
makz (2007-01-11 11:09:00) [24]Да, нарастающий итог.
Sergey13 (2007-01-11 09:42:00) [25]> [6] makz © (11.01.07 09:31)
У sum(summ) не может быть конкретной даты - это абсурд помоему. Или я не понимаю задачи. Может это нарастающий итог? Что за процедура, которую ты хочешь заменить запросом - приведи код.
makz (2007-01-11 09:31:00) [26]
> > имеете ввиду Вряд ли. Твой вариант запроса вообще, ИМХО,
> не имеет смысла. 8-)
Я в курсе. Просто все немножко сложнее - не summ<0, а именно sum(summ)<0.
Sergey13 (2007-01-11 08:50:00) [27]> [4] makz © (11.01.07 07:42)
> имеете ввиду
Вряд ли. Твой вариант запроса вообще, ИМХО, не имеет смысла. 8-)
Может нечто вроде
select max(dok1.DOKDATE)-(select max(dok2.DOKDATE) from dok dok2 where summ<0 and dok2.dokdate<dok1.dokdate)
from dok dok1 where summ<0
makz (2007-01-11 07:42:00) [28]имеете ввиду
select max(DOKDATE)-min(DOKDATE) from dok where sum(summ)<0:)
проблема в том, что нужна не просто минимальная дата c отрицательной суммой, нужен именно последний промежуток времени, когда сумма была отрицательной.
unknown (2007-01-11 07:33:00) [29]
select max(DOKDATE)-min(DOKDATE) from dok where summ<0
makz (2007-01-11 07:25:00) [30]проще так:
CREATE TABLE DOK (
SUMM DECIMAL(15,2) NOT NULL,
DOKDATE DATE NOT NULL
);
Сюда добавляются записи, с возрастающей DOKDATE и разными SUMM. Если в на данную дату сумма отрицательная, то надо вычислить, как давно она отрицательная.
Sergey13 (2007-01-10 08:15:00) [31]> Прошу прощения, если невнятно задал вопрос, долго уже мучаюсь
Предлагаешь долго мучиться и нам? Нифига непонятно, что надо.