![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по условным операторам в SQL Firebird 1.X
Rule © (2004-10-05 12:23:00)Как мне сделать выбор по условию, щас попробую объяснить ...
допустим есть 2 поля
COUNT(numeric(12,3))
TTYPE(CHAR(1)) - принимает 2 значения "+" или "-"
так вот надо сделать запрос типа такого чтоб складывало количество если тип равен плюсу или вычитало если минусу, как такое сделать
ну если в цикле изобразить то получится
while not table1.eof do begin
if table.fields[1].asstring='+' then allcount:=allcount+table.fields[0].asinteger;
if table.fields[1].asstring='-' then allcount:=allcount-table.fields[0].asinteger;
table1.next;
end;
ну так я думаю будет понятно ?
Sandman25 (2004-10-05 15:58:00) [21]Нет, лучше переход на FB, или upgrade до IB6 (или 7, уже не помню)
Rule (2004-10-05 15:56:00) [22]Sandman25 © (05.10.04 15:55) [21]
да ну ради одной реализации писать удф, нет уж извольте, лучше калькулейтид фидлс :(
Sandman25 (2004-10-05 15:55:00) [23][20] Rule © (05.10.04 15:52)
Поверим :)
udf писать
Rule (2004-10-05 15:52:00) [24]Друзья, вы не поверите, но в интербейзе нет оператора CASE !!!!!!!!!!!!!!!!!!!!!
только что читал LanGRef так там даже ключевого слова такого нет, и кроме того ибэксперт не подсвечивает его как зарезервированое, вот это дела, и как теперь в одном запросе так сделать как с помощью CASE
Rule (2004-10-05 15:48:00) [25]jack128 © (05.10.04 15:40) [18]
ЭЭЭЭЭЭЭЭЭЭЭЭЭ батенька, я задавался этим вопросом очень долго, но приходится писать прогрмму под существующую базу ...
jack128 (2004-10-05 15:40:00) [26]веселая ветка.
Одно понятно - нафиг поле TType ??? Пусть поле Count будет знаковым и все дела..
Или дома в постеле секса не хватает - хочется еще на работе с SQL тр@№$ться?? ;-)
sniknik (2004-10-05 15:11:00) [27];о) еще более.
зато весело.
sniknik (2004-10-05 15:11:00) [28]зато всесело.
Rule (2004-10-05 15:08:00) [29]sniknik © (05.10.04 15:02) [10]
Johnmen © (05.10.04 15:02) [11]
Елки палки, извините меня пожалуйста, надо по ночам спать а не вышеуказанными вещами заниматься :)))
мог бы и сам додуматся, не раз же делал :)))
Огромное спасибо всем присутствующим :)))
Rule (2004-10-05 15:06:00) [30]Johnmen © (05.10.04 15:02) [11]
да я ради примера привел, у меня то таблица другая, я просто идею так показал :)
sniknik (2004-10-05 15:04:00) [31];о)))
sniknik (2004-10-05 15:03:00) [32]пропустил, с полем COUNT так просто не получится, зарезервированное слово. (нада в скобочки, "" такие вроде там в FB)
Johnmen (2004-10-05 15:02:00) [33]
SELECT SUM((CASE TTYPE WHEN '+' THEN 1 WHEN '-' THEN -1 ELSE 0 END)*COUNT) FROM Table
Кстати, название поля COUNT обязательно !!! измени.
sniknik (2004-10-05 15:02:00) [34]> Ух, а чегоже тогда посоветуете
того же самого
SELECT Sum(CASE WHEN TTYPE='+' THEN COUNT ELSE -COUNT END) AS allcount FROM table1
> [5]
непонятно почему не подходит...? или имелся ввиду секс? ;о))
Rule (2004-10-05 14:39:00) [35]Johnmen © (05.10.04 14:15) [8]
Ух, а чегоже тогда посоветуете
Johnmen (2004-10-05 14:15:00) [36]>проце тогда с помощью калкулейтид филдс сделать :)))
И нездорового секса здесь больше...:)
Rule (2004-10-05 14:13:00) [37]Johnmen © (05.10.04 14:09) [4]
Вот я и говорю что секс нужен :(, а я сегодня не активный в этом плане и вигра не поможет, проце тогда с помощью калкулейтид филдс сделать :)))
Johnmen (2004-10-05 14:12:00) [38]>Rule © (05.10.04 14:10) [5]
Для чего процедуру ? Для секса или CASE ?
Для CASE точно не надо...:)
Rule (2004-10-05 14:10:00) [39]Johnmen © (05.10.04 12:31) [2]
Не, этот вариант не подходит, так как это надо процедуру писать :(
Johnmen (2004-10-05 14:09:00) [40]>Rule © (05.10.04 14:07) [3]
Конечно. Вместе с хорошим сексом...:)