![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом [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]
запросом не сделаешь. пиши прок