-
Леха2 (11.11.10 15:36) [0]Имеется представление, в котором, предположим, есть 3 поля:
Num (номер)
Value (кол-во)
Type (тип. Где 0-приход, 1-расход)
Задача: просчитать общее количество с учетом прихода и расхода.
В данный момент я расчитываю так:
Сумма прихода = select sum(Value) from таблица where Type=0
Сумма расхода = select sum(Value) from таблица where Type=1
Общая = Сумма прихода - Сумма расхода
Можно ли делать еще быстрее? Предположим, не двумя запросами, а одним?
В общем, рассмотрю любые варианты.
Спасибо! -
> Предположим, не двумя запросами, а одним?
если субд/движок поддерживает то почему бы и нет? хотя постой, у тебя же нет субд/движка. НЕЛЬЗЯ!
> В общем, рассмотрю любые варианты.
используй субд. -
Леха2 (11.11.10 15:48) [2]>у тебя же нет субд/движка
Есть. Я ж написал, использую представление. Firebird использую в качестве БД.
>то почему бы и нет
И как он будет выглядеть? -
12 © (11.11.10 15:54) [3]select sum(Value), Type from таблица group by Type
-
> select sum(Value), Type from таблица group by Type
это возможно будет дольше чем типа (смотря как индексы по полю учасnвуют) -select
sum(case when Type=0 then Value else 0 end) as sum1,
sum(case when Type=1 then Value else 0 end) as sum2
from таблица -
Petr V. Abramov © (11.11.10 16:06) [5]
> Type (тип. Где 0-приход, 1-расход)
делаем1
-приход,-1
-расход
теперьselect sum(value*type) from таблица
дает искомое -
12 © (11.11.10 16:24) [6]
> делаем 1 -приход, -1 -расход
> теперь
> select sum(value*type) from таблица дает искомое
тоже хотел сказать!
но, блин, автор последнюю строчку
> Общая = Сумма прихода - Сумма расхода
как код не выделил, и ее не прочитал внимательно :) -
Леха2 (11.11.10 16:48) [7]Спасибо всем! Помогло.