Главная страница
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.006 c
2-1351761460
mnj
2012-11-01 13:17
2013.06.02
Получение координат курсора в динамически созданном TImage


15-1359516511
Кто б сомневался
2013-01-30 07:28
2013.06.02
Как запускать игру)


15-1359145803
Юрий
2013-01-26 00:30
2013.06.02
С днем рождения ! 26 января 2013 суббота


15-1358803496
N.Cage
2013-01-22 01:24
2013.06.02
Защита приложений


15-1358864685
Nucer
2013-01-22 18:24
2013.06.02
Исключение при доступе к памяти