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

Откуда:
Сообщений: 6
сейчас код такой:
select FM_ACCOUNT.FM_ACCOUNT_ID,SUM(FM_ACCOUNT_TRAN.TRAN_SUM) as SUMM
from FM_ACCOUNT FM_ACCOUNT LEFT OUTER JOIN FM_ACCOUNT_TRAN FM_ACCOUNT_TRAN ON FM_ACCOUNT.FM_ACCOUNT_ID=FM_ACCOUNT_TRAN.FM_ACCOUNT_ID
group by FM_ACCOUNT.FM_ACCOUNT_ID order by SUMM desc

результат получаю такой:
12 3000,00
11 0,00
2 NULL
3 NULL
4 NULL
5 NULL

Хочу получать результат вида:
12 3000,00


Т.е. чтобы в результате выводились только положительные суммы. Подскажите а?!
20 июн 14, 06:25    [16192881]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
HAVING
20 июн 14, 06:28    [16192882]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
medicina70
Member

Откуда:
Сообщений: 6
Ruuu, Спасибо, помогло!
20 июн 14, 06:31    [16192884]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
aleks2
Guest
Ruuu
HAVING

Садись, неуд.

Нафига сначала группировать ЛИШНЕЕ, затем фильтровать?

where  ... is not null 
20 июн 14, 07:40    [16192946]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
случайно заглянул
Guest
aleks2
Ruuu
HAVING

Садись, неуд.

Нафига сначала группировать ЛИШНЕЕ, затем фильтровать?

where  ... is not null 

а это куда девать?
11 0.00

и тем более, ТС может чего недоговаривает и там могут быть и отрицательные суммы. Но это уже мои домыслы, потому что в приведенном примере этого не видно.
20 июн 14, 07:58    [16192987]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
случайно заглянул
и тем более, ТС может чего недоговаривает и там могут быть и отрицательные суммы. Но это уже мои домыслы, потому что в приведенном примере этого не видно.
Это не домыслы - задача ведь стоит "только положительных сумм", а вот в тестовом примере может не хватать каких-то наборов значений.
20 июн 14, 08:21    [16193016]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
случайно заглянул
Guest
Ruuu
случайно заглянул
и тем более, ТС может чего недоговаривает и там могут быть и отрицательные суммы. Но это уже мои домыслы, потому что в приведенном примере этого не видно.
Это не домыслы - задача ведь стоит "только положительных сумм", а вот в тестовом примере может не хватать каких-то наборов значений.


Именно домыслы, поскольку ТС привел пример, где есть положительное число, нулевое и неопределенные значения. Если бы он хотел обратить внимание еще и на наличие отрицательных сумм, то включил бы и их в пример.
Но предлагаю дальше не продолжать спорить по этому поводу, так как тут не состязание гадалок :) Пусть ТС сам ответит.
20 июн 14, 08:28    [16193029]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
aleks2
Guest
случайно заглянул
aleks2
пропущено...

Садись, неуд.

Нафига сначала группировать ЛИШНЕЕ, затем фильтровать?

where  ... is not null 

а это куда девать?
11 0.00

и тем более, ТС может чего недоговаривает и там могут быть и отрицательные суммы. Но это уже мои домыслы, потому что в приведенном примере этого не видно.


Вангую, написать
where  ... is not null and ... <> 0

после этого можно и having... если уж "отрицательные".
20 июн 14, 08:47    [16193081]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
medicina70
Member

Откуда:
Сообщений: 6
Спасибо за дискуссию. В результате мне нужны только положительные суммы и не равные 0.
по рекомендации дописал HAVING SUM(FM_ACCOUNT_TRAN.TRAN_SUM)>0
полученный результат устроил.
23 июн 14, 14:19    [16206573]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
случайно заглянул
Guest
medicina70
Спасибо за дискуссию. В результате мне нужны только положительные суммы и не равные 0.
по рекомендации дописал HAVING SUM(FM_ACCOUNT_TRAN.TRAN_SUM)>0
полученный результат устроил.


А вы поняли суть дискуссии? :)
Советом от aleks2 воспользовались, чтобы лишнее не суммировать?
23 июн 14, 15:50    [16207372]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4846
aleks2
Ruuu
HAVING

Садись, неуд.

Нафига сначала группировать ЛИШНЕЕ, затем фильтровать?

where  ... is not null 


Как я понял, нужно было не суммировать только положительные, а ОСТАВИТЬ ПОЛОЖИТЕЛЬНЫЕ СУММЫ, поэтому естественно HAVING, потому что значение суммы известно только после агрегации
23 июн 14, 15:54    [16207404]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
случайно заглянул
Guest
a_voronin
aleks2
пропущено...

Садись, неуд.

Нафига сначала группировать ЛИШНЕЕ, затем фильтровать?

where  ... is not null 


Как я понял, нужно было не суммировать только положительные, а ОСТАВИТЬ ПОЛОЖИТЕЛЬНЫЕ СУММЫ, поэтому естественно HAVING, потому что значение суммы известно только после агрегации


Учебник арифметики для 1-го класса: 0+0=0
Любой учебник по T-SQL, первые страницы: NULL+NULL=NULL

Щас совет aleks2 стал понятнее?
23 июн 14, 16:06    [16207509]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
iap
Member

Откуда: Москва
Сообщений: 47105
случайно заглянул
a_voronin
пропущено...


Как я понял, нужно было не суммировать только положительные, а ОСТАВИТЬ ПОЛОЖИТЕЛЬНЫЕ СУММЫ, поэтому естественно HAVING, потому что значение суммы известно только после агрегации


Учебник арифметики для 1-го класса: 0+0=0
Любой учебник по T-SQL, первые страницы: NULL+NULL=NULL

Щас совет aleks2 стал понятнее?
NULL+NULL - это NULL?? Точно?

Однако, NULL игнорируется агрегатными функциями.
Об этом даже выдаётся предупреждение.
23 июн 14, 16:22    [16207669]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
iap
Member

Откуда: Москва
Сообщений: 47105
iap
NULL+NULL - это NULL?? Точно?
Конечно, точно. Что же я глупость сморозил-то.
Но остальное - правда.
23 июн 14, 16:24    [16207686]     Ответить | Цитировать Сообщить модератору
 Re: Как получить результат только положительных сумм  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4846
случайно заглянул
a_voronin
пропущено...


Как я понял, нужно было не суммировать только положительные, а ОСТАВИТЬ ПОЛОЖИТЕЛЬНЫЕ СУММЫ, поэтому естественно HAVING, потому что значение суммы известно только после агрегации


Учебник арифметики для 1-го класса: 0+0=0
Любой учебник по T-SQL, первые страницы: NULL+NULL=NULL

Щас совет aleks2 стал понятнее?


Я прекрасно знаю про NULL. Если на входе положительные и NULL значения, вы правы. Если отрицательные есть, то вы не правы.

-20 + 100 == 80, а -100 + 20 == -80 .
23 июн 14, 16:48    [16207872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить