Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Суммирование в запрсе Null-полей   Найти похожие ветки 

 
Юра   (2002-10-09 16:36) [0]

Пишем Select field1+field2 as summ. Если одно из полей Null то результат Null (поля типа Currency). Как сделать чтобы вместо null считалось 0 средствами Local SQL или FastReport2.3. не заполняя принудительно таблицу нулями.


 
passm ©   (2002-10-09 16:52) [1]

ИМХО по хорошему никак.
SELECT T1.FIELD1 AS SUMM
FROM TABLE1 AS T1
WHERE T1.FIELD2 IS NULL
UNION ALL
SELECT T1.FIELD2 AS SUMM
FROM TABLE1 AS T1
WHERE T1.FIELD1 IS NULL
UINION ALL
SELECT T1.FIELD1 + T1.FIELD2
FROM TABLE1 AS T1
WHERE T1.FIELD1 IS NOT NULL AND T2.FIELD2 IS NOT NULL


 
Val ©   (2002-10-09 16:52) [2]

не заполняя принудительно таблицу нулями.
null и ноль принципиально разные вещи, арифметическая операция с null дает null, хотите ноль, пишите в поле именно ноль. Отобразить же вместо null ноль, можно используя событие OnGetText.


 
still ©   (2002-10-09 16:57) [3]

использование NULL в принципе хорошим тоном не является. хотя бывает необходимость


 
Юра   (2002-10-09 17:15) [4]

>Val ©, still ©
Задача стоит такая: отображать для пользователя null если операцый небыло и 0 если были но сумма льгот нулевая. Итог считать надо в обоих случаях.


 
still ©   (2002-10-09 17:23) [5]

есть такая штука в SQL как CASE. В T-SQL точно есть, а вот входит ли в стандарт - не знаю. Посмотри в хелпах
Т.е. на SQL Server я бы написал так
select SUM( case Table1.Field1 when NULL then 0 else 0)
where ...
синтаксис могу немного наврать, но смысл такой


 
passm ©   (2002-10-09 17:32) [6]

still © (09.10.02 17:23)> Для Paradox"а этого нет.


 
Val ©   (2002-10-09 17:35) [7]

ваш итог - это операция сложения сумм в строке или в столбце??
если в строке, как вы написали, то можно отказаться от запроса и сложить значения в цикле по таблице, средствами делфи делая проверку .IsТull и заменяя на 0.


 
still ©   (2002-10-09 17:43) [8]

Можно такой вариант - заводишь новую таблицу, в которой храшишь флаг, типа были операции с записью или не было.
Соотв. в сумме добавляется условие -
Where Flag=были


 
MsGuns ©   (2002-10-09 19:11) [9]

>Юра (09.10.02 17:15)
А что, все начисления-удержания по челу валяются в ОДНОЙ записи ? Зачем делать табуляцию (т.е.суммирование по строке), если все суммы идут разными записями ? Просто калькуляция, а при ней все NULL интерпретируются как нули (для чисел) не применима ?


 
_Voland   (2002-10-09 19:52) [10]

Я делаю так
Select IsNull(Field1,0)+ IsNull(Field2,0) as Summ


 
Val ©   (2002-10-09 20:41) [11]

>_Voland (09.10.02 19:52)
на Local SQL??? сомневаюсь.


 
Слава   (2002-10-10 10:48) [12]

Сделай себе вьюшку где предварительно отбрасываешь NULL поля,и работай дальше с вьюшкой как с с обыкновенной таблицей которая постоянно обновляется ( конечно если у тебя нет проблемы с РЕСУРСАМИ )


 
Johnmen ©   (2002-10-10 10:58) [13]

>Слава (10.10.02 10:48)

Ну вот, еще один "отвечающий", не удосужившийся прочитать внимательно вопрос...Печально...:(


 
Слава   (2002-10-10 10:59) [14]

Извините не NULL поля а NULL записи


 
Johnmen ©   (2002-10-10 11:04) [15]

>Слава

Еще раз невнимателен...:) Обрати внимание на тип СУБД :)



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

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

Наверх




Память: 0.49 MB
Время: 0.036 c
14-101454
vopros
2002-10-07 11:13
2002.10.31
Люди у меня радикальное предложение


1-101260
Юра
2002-10-22 11:51
2002.10.31
Правильное завершение работы своего приложения


1-101181
Граф
2002-10-18 14:07
2002.10.31
progress bar в таблице


14-101529
Mr_Random
2002-10-14 02:25
2002.10.31
C++ Builder


3-101067
AlGin
2002-10-11 22:36
2002.10.31
ROLE+BDE+InterBase