![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по синтасису coalesce в оракле
Rule © (2005-07-26 16:41:00)подскажите пожалуйста как сделать вот такой запрос
select coalesce (field1,0) from table1
Синтаксис Оракла требует чтоб второй параметр, в моем случае "0" тоже был полем ...
как обойти
вариант if then не подходит так как в этом случае field1 надо писать два раза, а у меня єто довольно большой подзапрос ....
подскажите пожалуйста ...
Rule (2005-07-26 17:09:00) [61]Reindeer Moss Eater © (26.07.05 17:08) [18]
немного не то, я ж не буду перечислять все возможные варианты процентных и абсолютных скидок ... смотрел уже в эту сторону
Rule (2005-07-26 17:08:00) [62]evvcom © (26.07.05 17:05) [17]
другого выхода тут нет ...
и особых затрат времени нет, на поной базе выполняется за очень короткое время, моргнуть не успеешь, тем более запрос выполняется раз в месяц для составления отчета, поэтому помоему никаких тут глюков не вижу ..., таблицы то маленькие, те которые в поля встраиваю
Reindeer Moss Eater (2005-07-26 17:08:00) [63]И в оракле можно указать как поле так и значение.
Decode(что-то, опция_1, выражение_1, опция_2, выражение_2, ......,опция_n,выражение_n,выражение_во_всех_прочих_случаях)
evvcom (2005-07-26 17:05:00) [64]Вот любители запихивать (иначе не назовешь) подзапросы внутрь возвращаемых значений и вязать с внешним подзапросом. Это хорошо, если оптимизатор разрулит такую дрянь и внутренние подзапросы выполнит по одному разу, а если на каждую строку будет этот подзапрос выполнять? Уснешь нафиг, а юзер повесится.
Johnmen (2005-07-26 17:05:00) [65]>Rule © (26.07.05 17:04) [15]
Да... Занятно... Отступили-таки...:)
Rule (2005-07-26 17:04:00) [66]Johnmen © (26.07.05 17:03) [14]
тоже самое, сразу пробовал
Johnmen (2005-07-26 17:03:00) [67]>Rule © (26.07.05 17:00) [13]
А если вместо '0' написать 0 ?
Rule (2005-07-26 17:00:00) [68]Rule © (26.07.05 16:57) [11]
а вот если вместо нуля написать какоелибо поле, то он когда пустое значение подставляет это поле, как и полагается ... тоесть он требует поле в качестве параметров, а не значения, а вот в Фаерберде можно и значение написать и потребность в NVL как бы отпадает
Rule (2005-07-26 16:59:00) [69]а только что написал вместо coalesce - NVL, то заработало ...именно это мне и надо было
Rule (2005-07-26 16:57:00) [70]то пишет
ORA-00904: Invalid column name
Rule (2005-07-26 16:55:00) [71]если писать вот так вот
select a.date_trn,
a.time_trn,
b.name_services,
a.sum_for_what,
b.unit_of_measurements,
a.price_terminal,
a.price_terminal*a.sum_for_what,
coalesce((select c.VAL from V_INT_DTARIF_ITEMS c,
V_INT_DTARIF d,
V_CLIENT_DTARIF e
where c.dtarif=d.id
and d.id=e.int_dtarif
and e.id_client=a.id_client
and c.id_service=a.id_services_for_what) ,'0')||
(case when (select c.TYPE_VAL from V_INT_DTARIF_ITEMS c,
V_INT_DTARIF d,
V_CLIENT_DTARIF e
where c.dtarif=d.id
and d.id=e.int_dtarif
and e.id_client=a.id_client
and c.id_service=a.id_services_for_what)
= 'C' then ' коп.'
else ' %'
end) as discount,
a.BASE_DELTA_SUM,
a.SUM_THAN_REAL,
a.SUM_THAN
from V_ECFIL139 a, V_ECFIL001 b
where a.id_services_for_what=b.id_services
and a.reason_change=11
Rule (2005-07-26 16:54:00) [72]вот то страшное составное поле первая часть пишет количество скидки а вторая тип скидки, копейки или проценты вот если скидки под клиента нет, то тип скидки выдет проценты а количество должно быть 0, тоесть
(select c.VAL from V_INT_DTARIF_ITEMS c,
V_INT_DTARIF d,
V_CLIENT_DTARIF e
where c.dtarif=d.id
and d.id=e.int_dtarif
and e.id_client=a.id_client
and c.id_service=a.id_services_for_what)
вот эту часть нада сделать NVL
Rule (2005-07-26 16:53:00) [73]вот запрос
select a.date_trn,
a.time_trn,
b.name_services,
a.sum_for_what,
b.unit_of_measurements,
a.price_terminal,
a.price_terminal*a.sum_for_what,
(select c.VAL from V_INT_DTARIF_ITEMS c,
V_INT_DTARIF d,
V_CLIENT_DTARIF e
where c.dtarif=d.id
and d.id=e.int_dtarif
and e.id_client=a.id_client
and c.id_service=a.id_services_for_what)||
(case when (select c.TYPE_VAL from V_INT_DTARIF_ITEMS c,
V_INT_DTARIF d,
V_CLIENT_DTARIF e
where c.dtarif=d.id
and d.id=e.int_dtarif
and e.id_client=a.id_client
and c.id_service=a.id_services_for_what)
= 'C' then ' коп.'
else ' %'
end) as discount,
a.BASE_DELTA_SUM,
a.SUM_THAN_REAL,
a.SUM_THAN
from V_ECFIL139 a, V_ECFIL001 b
where a.id_services_for_what=b.id_services
and a.reason_change=11
Rule (2005-07-26 16:52:00) [74]Johnmen © (26.07.05 16:51) [4]
щас секундочку
Sergey13 (2005-07-26 16:52:00) [75]Ты чего хочешь то в результате?
Rule (2005-07-26 16:52:00) [76]Sergey13 © (26.07.05 16:46) [1]
Точно, Сергей, большое спасибо ...
Johnmen (2005-07-26 16:51:00) [77]>Rule © (26.07.05 16:50) [3]
Я тоже не верю, что Оракул отклонился от стандарта.
Ошибку и текст запроса в студию !
Rule (2005-07-26 16:50:00) [78]Fay © (26.07.05 16:48) [2]
почему єто чушь ORACLE8 и по английцки я читать умею
Fay (2005-07-26 16:48:00) [79]2 Rule © (26.07.05 16:41)
> Синтаксис Оракла требует чтоб второй параметр, в моем
>случае "0" тоже был полем ...
Чушь.
Sergey13 (2005-07-26 16:46:00) [80]А тебе случаем не NVL нужен?