Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Срок задолженности [fb 1.5]


Страницы:   1 2

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]

> Прошу прощения, если невнятно задал вопрос, долго уже мучаюсь

Предлагаешь долго мучиться и нам? Нифига непонятно, что надо.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо