2015-03-06 8 views
0

Я использую Oracle, и я хочу заменить нулевые значения на 0, но он не работает. Это мой запрос:Функция NVL в Oracle

with pivot_data as (
    select (NVL(d.annulation,0)) as annulation , 
    d.id_cc1_annulation as nature , 
    t.mois as mois 
    from datamart_cnss d , ref_temps t 
    where t.id_temps = d.id_temps 
) 
select * from pivot_data 
PIVOT (sum(annulation) 
     for nature in (2 as debit ,1 as redit) 
) 
order by mois asc; 
+0

на первый взгляд, ваше использование NVL выглядит правильно, было бы полезно, если бы вы могли предоставить инструкции INSERT для данных в таблице аннуляции. Если бы я должен был догадаться, я бы сказал, что столбец d.annulation фактически не равен NULL. – davegreen100

+1

Просьба показать данные образца, текущий выход и ожидаемый результат. Вы, вероятно, хотите обрабатывать нули в своде, а не (просто) в базовом запросе? –

ответ

0

Я думаю (из-за отсутствия примера), ваша идея показать не аннулирует в результате после поворота. Если это так, то ваш запрос (я думаю) не всегда возвращает оба значения nature 1 и 2.

Оператор NVL в этом случае прекрасно работает, но вы поставили его неправильно. Это место, которое генерирует ваш NULL из-за каких-либо строк, найденных по заданным критериям:

PIVOT (sum(annulation) 

Если вы улучшить этотsum результат с любовью NVL - Я уверен, что он будет работать, как вы ожидаете.

Смежные вопросы