Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: 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 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.029 c
3-41002
OlkaGTS
2003-10-16 12:13
2003.11.13
Один DataSetProvicer - много ClientDataSet


1-41614
vic_vm
2003-10-25 20:29
2003.11.13
Не могу перевести C++ код на Delphi


3-40953
AtoL
2003-10-17 12:20
2003.11.13
Прогресс выполнения запроса.


1-41270
hepry
2003-10-31 14:38
2003.11.13
Правильная работа с ComboBox csDropDown


6-41848
aldapooh
2003-09-12 10:45
2003.11.13
Сокет