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

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

Проблема с запросом [D7, IB6.x]


Gennadiy ©   (2003-11-25 18:51:00) 

Уважаемые мастера!!!
Подскажите пожалуйста с такой проблемой в запросе базы Firebird.
Есть таблица MONEY с полями
ID-идентификатор
SUMM-сумма полатежа
TIP-тип платежа (это integer если =1 то приход, если 0-то расход).
DATEPLATES-дата платежа
Так вот мне нужно сделать запрос в результате выполнения которого было число равное разнице между суммой вcего прихода и суммой всего расхода,
что то вроде вот этоого
SELECT SUM(SUMM) from money where tip=1 -
SELECT SUM(SUMM) from money where tip=0


Sandman25   (2003-11-26 10:05:00) [1]

[5] Johnmen © (25.11.03 19:00)

У нас точно такая же структура таблиц, как и у автора (1/0), так что мне такие запросы снятся по ночам :)
Жаль, что не подумали об этом раньше и не сделали 1/-1. Тогда можно было бы писать просто sum(summ*tip).


Gennadiy   (2003-11-25 19:37:00) [2]

Спасибо всем!!!!
Предложенные варианты отлично работают.


Romkin   (2003-11-25 19:05:00) [3]

Угу, только для IB6.x никак не подходит


Vemer   (2003-11-25 19:03:00) [4]

Нам в синхронном плавании надо участвовать.
Мой вариант хоть и самый громозкий, зато не зависит от значений TIP :).


Johnmen   (2003-11-25 19:00:00) [5]

>Sandman25 © (25.11.03 18:57)

;-)


Vemer   (2003-11-25 18:58:00) [6]

А если так:
Select ((Select Sum(Summ) From Money Where Tip=1) - (Select Sum(Summ) From Money Where Tip=0)) As Raznica From Money


Sandman25   (2003-11-25 18:57:00) [7]

select sum(summ*(2*tip-1)) from money


Johnmen   (2003-11-25 18:56:00) [8]

SELECT SUM(SUMM*tip)-SUM(SUMM*(1-tip)) from money


Serg   (2003-11-25 18:54:00) [9]

запросом не сделаешь. пиши прок


Наверх

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