Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по синтасису coalesce в оракле


Страницы:   1 2 3 4

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 нужен?


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо