Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с запросом  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Сейчас запрос возвращает и положительные и отрицательные числа в зависимости от результата разности двух выборок, а нужно чтобы возвращал только положительные, а в случае, если результат разности отрицательный, то возвращал 0.

Вот запрос:

select
	Orders.OrderID,
	(select isnull(sum(OrdersLoaders.Worked), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID and OrdersLoaders.IsPaid = 0) * Loaders.Rate - 
	(select isnull(sum(OrdersLoaders.Advance), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID) as Balance

Может есть какие-нибудь функции или ещё какие-нибудь способы?
17 май 11, 08:33    [10662436]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Edkonst2008
Member

Откуда:
Сообщений: 503
strizzz
Сейчас запрос возвращает и положительные и отрицательные числа в зависимости от результата разности двух выборок, а нужно чтобы возвращал только положительные, а в случае, если результат разности отрицательный, то возвращал 0.

Вот запрос:

select
	Orders.OrderID,
	(select isnull(sum(OrdersLoaders.Worked), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID and OrdersLoaders.IsPaid = 0) * Loaders.Rate - 
	(select isnull(sum(OrdersLoaders.Advance), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID) as Balance

Может есть какие-нибудь функции или ещё какие-нибудь способы?


Есть, Case называется.

Что-то типа

select CASE 
                    WHEN aaa.Balance<0 THEN 0
                    ELSE aaa.Balance 
                    END from (select
	Orders.OrderID,
	(select isnull(sum(OrdersLoaders.Worked), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID and OrdersLoaders.IsPaid = 0) * Loaders.Rate - 
	(select isnull(sum(OrdersLoaders.Advance), 0) from OrdersLoaders where OrdersLoaders.LoaderID = Loaders.LoaderID) as Balance) aaa
17 май 11, 08:38    [10662449]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить