Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.06.02;
Скачать: CL | DM;

Вниз

запрос   Найти похожие ветки 

 
Леха2   (2010-11-11 15:36) [0]

Имеется представление, в котором, предположим, есть 3 поля:
Num (номер)
Value (кол-во)
Type (тип. Где 0-приход, 1-расход)

Задача: просчитать общее количество с учетом прихода и расхода.

В данный момент я расчитываю так:
Сумма прихода  =  select sum(Value) from таблица where Type=0
Сумма расхода  =  select sum(Value) from таблица where Type=1

Общая = Сумма прихода - Сумма расхода

Можно ли делать еще быстрее? Предположим, не двумя запросами, а одним?
В общем, рассмотрю любые варианты.

Спасибо!


 
sniknik ©   (2010-11-11 15:39) [1]

> Предположим, не двумя запросами, а одним?
если субд/движок поддерживает то почему бы и нет? хотя постой, у тебя же нет субд/движка. НЕЛЬЗЯ!

> В общем, рассмотрю любые варианты.
используй субд.


 
Леха2   (2010-11-11 15:48) [2]

>у тебя же нет субд/движка

Есть. Я ж написал, использую представление. Firebird использую в качестве БД.

>то почему бы и нет

И как он будет выглядеть?


 
12 ©   (2010-11-11 15:54) [3]

select sum(Value), Type from таблица group by Type


 
sniknik ©   (2010-11-11 16:03) [4]

> 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 ©   (2010-11-11 16:06) [5]


> Type (тип. Где 0-приход, 1-расход)

делаем  1 -приход, -1 -расход
теперь
select sum(value*type) from таблица дает искомое


 
12 ©   (2010-11-11 16:24) [6]


> делаем  1 -приход, -1 -расход
> теперь
> select sum(value*type) from таблица дает искомое

тоже хотел сказать!
но, блин, автор последнюю строчку

> Общая = Сумма прихода - Сумма расхода

как код не выделил, и ее не прочитал внимательно :)


 
Леха2   (2010-11-11 16:48) [7]

Спасибо всем! Помогло.



Страницы: 1 вся ветка

Текущий архив: 2013.06.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1358945710
{ dmitry }
2013-01-23 16:55
2013.06.02
защитить приложение от клонов


2-1351922003
alexdn
2012-11-03 09:53
2013.06.02
Расширение формы


15-1359311215
Jimmy
2013-01-27 22:26
2013.06.02
Оценочные функции игр на доске


15-1359113441
aka
2013-01-25 15:30
2013.06.02
Oberon


15-1359391746
Медвежонок Пятачок
2013-01-28 20:49
2013.06.02
Формат пакета TClientDataSet D7 и XE2