![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Условная сборка таблиц [D7]
Endi © (2003-05-29 20:58:00)Всем здрасте.
Такой вопрос к Вам у меня.
Есть две таблицы, примерно таких:
1. F1 F2 F3 2. F1 F2
A 0.3 ШТ A 5
B 0.2 ШТ B 4
C 0.0 КГ C 3
D 0.1 ШТ D 4
Нужно получить, примерно такую:
F1 F2 F3 F4
A 0.3 КГ 1.5
B 0.2 КГ 0.8
C 1.0 КГ 3.0
D 0.1 КГ 0.4
т.е., все ШТ заменяются на КГ, если 1.F2=0, то заменяется на 1, далее происходит перемножение 1.F2 на 2.F2, из произведения коих получается F4.
Так вот, вопрос:
у меня лично уже мозги плавятся, но никак не догоняю - как получить конечную таблицу с помощью SQL.
Zacho (2003-05-30 12:15:00) [1]
> Sandman25 © (30.05.03 11:57)
А в IB никогда не было CASE . CASE появился совсем недавно, в FB 1.5 А в IB такое можно сделать хранимой процедурой.
Впрочем, понятно, что за 3 года можно и позабыть что есть в IB, а чего нет :)
Но один черт, пока не узнаем, какая СУБД у автора ветки, правильный ответ дать не сможем :-)
Sandman25 (2003-05-30 11:57:00) [2]Zacho © (30.05.03 11:08)
Я последний раз на IB работал года 3 назад, так что FB даже не видел никогда :) Тем более FB 1.5 :)
Zacho (2003-05-30 11:08:00) [3]
> Sandman25 © (30.05.03 11:00)
Только не на IB, а на FB 1.5 :)
Соловьев (2003-05-30 11:05:00) [4]
> Sandman25 © (30.05.03 11:00)
к автору поста
Sandman25 (2003-05-30 11:00:00) [5]2 Соловьев
Если вопрос был ко мне, то это Informix. На IB должно быть аналогично.
Соловьев (2003-05-30 10:49:00) [6]СУБД?
Sandman25 (2003-05-30 10:47:00) [7]
select t1.f1,
case
when t1.f2 = 0 then 1
else t1.f2
end f2,
case
when t1.f3 = "ШТ" then "КГ"
else t1.f3
end f3,
case
when t1.f2 = 0 then t2.f2
else t1.f2 * t2.f2
end f4
from t1,
t2
where t1.f1 = t2.f1
ЮЮ (2003-05-30 07:20:00) [8]если 1.F2=0, то заменяется на 1
Логичнее вместо 0 иметь 1 (т.к. 1 кг весит 1 кг, а не 0), тогда можно просто умножать 1.F2 на 2.F2
Zz_ (2003-05-29 21:04:00) [9]1. case
2. union с where