Вниз
Скачать: CL | DM;

функция Sum в SQL   Найти похожие ветки 

← →
Брат ©   (2003-10-23 11:24) [0]

Доброе утро! Как мне сдулать чтобы Sum возвращало NULL вместо 0?
Заранее спасибо :)


← →
Reindeer Moss Eater ©   (2003-10-23 11:28) [1]

Select null from table


← →
Брат ©   (2003-10-23 11:31) [2]


> Reindeer Moss Eater ©

чтобы если при суммировании получается цифра отличная от нуля - то возвращается эта цифра, а если ноль, то возвращается NULL...


← →
Reindeer Moss Eater ©   (2003-10-23 11:33) [3]

Обычно хотят обратного.

IIF или обработка на клиенте


← →
Zacho ©   (2003-10-23 11:34) [4]

А зачем ???
А вообще - в IB6.x - хранимой процедурой, а в Yaffil или FB 1.5 можно и прямо в запросе.


← →
Плохиш_   (2003-10-23 11:34) [5]


> Брат © (23.10.03 11:24)
> Доброе утро! Как мне сдулать чтобы Sum возвращало NULL вместо
> 0?
> Заранее спасибо :)


Я балдею, одному надо 0 вместо null, другому null вместо нуля.
:-)))


← →
Брат ©   (2003-10-23 11:36) [6]


> Reindeer Moss Eater © (23.10.03 11:33) [3]
> Обычно хотят обратного.
>
> IIF или обработка на клиенте

я пробовал IIF - он мне выдает ошибку что не знает что такое NULL. Вот так я делаю:
iif(sum(M1),null,sum(M1))


← →
Polevi ©   (2003-10-23 11:37) [7]

isNull ?


← →
Zacho ©   (2003-10-23 11:39) [8]


> Брат © (23.10.03 11:36) [6]

Так все-таки, сервер у тебя какой ? IB ? Yaffil ? FB ?


← →
Брат ©   (2003-10-23 11:39) [9]


> Я балдею, одному надо 0 вместо null, другому null вместо
> нуля.

чтобы сделать 0 вместо NULL, это просто есть функция Z в RFUNC... а вот наоборот....


← →
Брат ©   (2003-10-23 11:40) [10]


> Zacho

IB


← →
Reindeer Moss Eater ©   (2003-10-23 11:41) [11]

А смысл и польза какая?


← →
Sergey13 ©   (2003-10-23 11:44) [12]

Так ИМХО, по умолчанию, если ничего не делать, то и возвратится NULL.


← →
Zacho ©   (2003-10-23 11:45) [13]


> Брат © (23.10.03 11:40) [10]

Нету в IB IIF. Так что пиши ХП.
И все равно не понимаю, зачем из 0 делать NULL ?


← →
Брат ©   (2003-10-23 11:48) [14]


> А смысл и польза какая?

Я использую отчеты PRReport, и мне надо чтобы там вместо нулей было ничего. Если в поле стоит NULL, то отчет в ячейке ничего не показывает, а если стоит 0, то он его показывает... Я давно мучаюсь с этими отчетами - никак не могу добиться этого...


← →
ZrenBy ©   (2003-10-23 11:50) [15]

>>И все равно не понимаю, зачем из 0 делать NULL ?

Ну например, случай - деление на ноль

select RES = Field1 / nullif(Field2,0)
при Field2=0 вернет null, а не будет грязно ругаться


← →
Брат ©   (2003-10-23 11:50) [16]


> Zacho
> Нету в IB IIF

стандартной нету, но если установить библиотеку функций RFUNC, то появится


← →
Reindeer Moss Eater ©   (2003-10-23 11:50) [17]

А в приложении (отчете) не обработать эту ситуацию?


← →
Sergey13 ©   (2003-10-23 11:50) [18]

2Брат
Или у тебя в поле нет NULLей, а ты хочешь их иметь? Занятно. 8-)


← →
Sandman25 ©   (2003-10-23 11:52) [19]

[14] Брат © (23.10.03 11:48)

У меня то же самое (PReport и выводится 0 для пустого Dataset), только вместо Sum у меня Count стоит. Ничего страшного в этом не вижу - наоборот пользователю будет виднее, что данных 0. Если захочет распечатать, пускай печатает :)


← →
Брат ©   (2003-10-23 11:52) [20]


> Reindeer Moss Eater © (23.10.03 11:50) [17]
> А в приложении (отчете) не обработать эту ситуацию?

мучился я уже с этим - пока не получается...
хочу это сделать с помощью SQL...


> Sergey13 © (23.10.03 11:50) [18]
> 2Брат
> Или у тебя в поле нет NULLей, а ты хочешь их иметь? Занятно.
> 8-)

У меня в поле нету значений NULL, но есть значения 0...


← →
Danilka ©   (2003-10-23 11:53) [21]

гы-гы-гы.

скажу чего-нибудь в тему, чтобы не прибили:
Кстати, надо делать не пустое поле, а ставить черточку, так правильнее, иначе потом можно туда чего-нибудь дописать :))


← →
Zacho ©   (2003-10-23 11:55) [22]

2 Брат: Обычно такие вещи делаются непосредственно в отчете, все нормальные генераторы отчетов это позволяют. И уж в крайнем случае есть TField.OnGetText, в к-ром можно сделать все что угодно. Так что не мучай сервер, а сделай в приложении.


← →
Sergey13 ©   (2003-10-23 11:55) [23]

Не юзал PReport, но разве нельзя сделать это поле не полем запроса, а просто лабелью и присваивать ей значение перед печатью бенда (он вроде бендовый? или я путаю?). Или просто подавлять печать поля при 0?


← →
Брат ©   (2003-10-23 11:57) [24]


> Sergey13 © (23.10.03 11:55) [23]
> Не юзал PReport, но разве нельзя сделать это поле не полем
> запроса, а просто лабелью и присваивать ей значение перед
> печатью бенда (он вроде бендовый? или я путаю?). Или просто
> подавлять печать поля при 0?

очень долго - у меня штук 20 подобных отчетов... Проще сделать так как я говорю - изменить нули на NULL


← →
Sergey13 ©   (2003-10-23 11:58) [25]

Ну-ну.


← →
Val ©   (2003-10-23 12:06) [26]

>Брат © (23.10.03 11:31) [2]
это неправильно, если вы получаете в результате суммирования 0, то нужно отображать именно 0.


← →
Брат ©   (2003-10-23 12:07) [27]


> ZrenBy © (23.10.03 11:50) [15]
> select RES = Field1 / nullif(Field2,0)
> при Field2=0 вернет null, а не будет грязно ругаться

а где взять эту функцию?


← →
Брат ©   (2003-10-23 12:09) [28]


> Val © (23.10.03 12:06) [26]
> >Брат © (23.10.03 11:31) [2]
> это неправильно, если вы получаете в результате суммирования
> 0, то нужно отображать именно 0.

а почему неправильно? кому как нравиться... зачем отображать ничего не значащие нули?


← →
Zacho ©   (2003-10-23 12:11) [29]

2 Брат © Если тебе уж так упорно не хочется делать в приложении - то напиши вместо запроса ХП.
> Брат © (23.10.03 12:07) [27]
> а где взять эту функцию?

В FB 1.5, например, есть :) А в Yaffil есть нормальный IIF :)


← →
Брат ©   (2003-10-23 12:16) [30]


> 2 Zacho © (23.10.03 12:11) [29]
> В FB 1.5, например, есть :) А в Yaffil есть нормальный IIF
> :)

а в интербэйс мона её загнать? или есть ли версия для IB?


← →
Zacho ©   (2003-10-23 12:19) [31]


> Брат © (23.10.03 12:16) [30]
>
> а в интербэйс мона её загнать?

Что значит "загнать" ?? Это функции SQL, а не UDF. Поставь вместо IB Yaffil или FB 1.5 и наслаждайся. Или пиши ХП. Или все-таки делай в приложении, например с помощью TField.OnGetText


← →
kaif ©   (2003-10-23 14:45) [32]

Лучшее решение на мой взгляд:
Zacho © (23.10.03 11:55) [22]
2 Брат: Обычно такие вещи делаются непосредственно в отчете, все нормальные генераторы отчетов это позволяют. И уж в крайнем случае есть TField.OnGetText, в к-ром можно сделать все что угодно. Так что не мучай сервер, а сделай в приложении.

В общем, на клиенте надо это делать. А если завтра заказчик захочет, чтобы вместо пустоты там тире отображались? Опять на сервер полезешь?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.023 c
3-41000
Patrick
2003-10-16 10:21
2003.11.13
Проблема с ApplyUpdates


8-41740
marconi
2003-07-15 12:09
2003.11.13
Опять про цвета


3-40905
mari
2003-10-20 11:00
2003.11.13
есть ли возможность делать выборку из Query?


1-41699
Deathmaster
2003-11-03 23:12
2003.11.13
Превратить в десятичный вид вещественное число, записанное в 16-р


1-41561
INTAARI
2003-10-27 12:39
2003.11.13
Выявление утечки памяти




   Наверх