Помогите, пожалуйста

Здравствуйте, люди добрые ^^''

на защите курсовика задали вопрос - написать запрос. После некоторого.. м.. приведения задачи к человеческому виду получилось следующее:

Имеем таблицу, где ведётся учёт некоторого ресурса

Дата_прихода | Количество_приход | Дата_расхода | Количество_расход

требуется получить первую дату, когда расход превысил приход.

Суть в том, чтобы для каждой даты получить сумму по свойству "Количество.." всего, что было до этой даты. Даты прихода и расхода между собой никак не соотносятся, так что можно сказать, что это две таблицы..

В общем, буду благодарна за любые светлые мысли по этой теме, потому что нам о таких возможностях не читали, и.. вот.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Вариант на вскидку, не оптимальный.

1. Для начала надо привести к одной таблице.
Обратить внимание во второй выборке на знак "-"

select Дата_прихода, Количество_приход from table
union
select Дата_расхода, -Количество_расход from table

2. Выборка с нарастающим итогом (избыточна).
Под table_union подразумевается вышестоящий запрос.

select Date, count from table_union ta1
where 0>
(select sum(count)
from table_union ta2
where ta2.Date<=ta1.Date);

3. выбрать минимальную дату min()
select min(Date) from table_union ta1
where 0>
(select sum(count)
from table_union ta2
where ta2.Date<=ta1.Date);

........ Что-то типа такого...
Возможно через with это будет более понятно и читабельно.

хм, спасибо.. я сделала

хм, спасибо.. я сделала немного по-другому. если представить, что это всё же две табицы, то:

SELECT дата_расхода, (SELECT sum(количество_приход) 
FROM tabl1 t1 WHERE t1.дата_расхода <= t.дата_расхода) AS raskhod,
(SELECT sum(количество_расход) FROM tabl2 WHERE дата_прихода<=Дата_расхода) AS prikhod
FROM tabl1 t; 

и дальше чисто технически выбрать первую дату, где приход меньше расхода.. криво, конечно, но работает вроде ^^'''''

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023