Столбцы суммы с нулевыми значениями в оракуле

В архитектурном шаблоне MVC JSP представляют собой слой «Вид». Встраивание java-кода в JSP считается плохой практикой. Вы можете использовать JSTL , freeMarker , скорость с JSP как «движок шаблона». Поставщик данных для этих тегов зависит от структуры, с которой вы имеете дело. Struts 2 и webwork в качестве реализации шаблона MVC использует OGNL «очень интересный метод для раскрытия свойств Beans для JSP».

26
задан Berek Bryan 26 February 2009 в 13:30
поделиться

6 ответов

select type, craft, sum(nvl(regular,0) + nvl(overtime,0)) as total_hours
from hours_t
group by type, craft
order by type, craft
47
ответ дан Tony Andrews 15 October 2019 в 06:50
поделиться

NVL (значение, значение по умолчанию) является функцией, которую Вы ищете.

select type, craft, sum(NVL(regular, 0) + NVL(overtime, 0) ) as total_hours
from hours_t
group by type, craft
order by type, craft

Oracle имеют 5 СВЯЗАННЫХ С ПУСТЫМ УКАЗАТЕЛЕМ функций:

  1. NVL
  2. NVL2
  3. ОБЪЕДИНЯЮТ
  4. NULLIF
  5. LNNVL

NVL:

NVL(expr1, expr2)

NVL позволяет Вам заменить пустой указатель (возвратился как пробел) со строкой в результатах запроса. Если expr1 является пустым, то NVL возвращает expr2. Если expr1 не является пустым, то NVL возвращает expr1.

NVL2:

NVL2(expr1, expr2, expr3)

NVL2 позволяет Вам определить значение, возвращенное запросом на основе того, является ли указанное выражение нулевым или не пустым. Если expr1 не является пустым, то NVL2 возвращает expr2. Если expr1 является пустым, то NVL2 возвращает expr3.

ОБЪЕДИНЯЮТ

COALESCE(expr1, expr2, ...)

, ОБЪЕДИНЯЮТ, возвращает первый непустой указатель expr в списке выражений. По крайней мере одним expr не должен быть литеральный ПУСТОЙ УКАЗАТЕЛЬ. Если все случаи expr оценивают к пустому указателю, то функциональный пустой указатель возвратов.

NULLIF

NULLIF(expr1, expr2)

NULLIF сравнивает expr1 и expr2. Если они равны, то функция возвращает пустой указатель. Если они не равны, то функция возвращает expr1. Вы не можете определить литеральный ПУСТОЙ УКАЗАТЕЛЬ для expr1.

LNNVL

LNNVL(condition)

LNNVL обеспечивает краткий способ оценить условие, когда один или оба операнда условия могут быть пустыми.

[еще 1135] информация о [1 111] Функции SQL Oracle

49
ответ дан zendar 15 October 2019 в 06:50
поделиться

Другие ответы относительно использования nvl () корректны однако, ни один, кажется, не обращается к более угловой точке:

Должен, Вы даже иметь АННУЛИРУЕТЕ в этом столбце?

у них есть значение кроме 0?

Это походит на случай, где у Вас должно быть ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ NOT NULL 0 на th ecolumn

9
ответ дан cletus 15 October 2019 в 06:50
поделиться

Ответ с самым высоким рейтингом с NVL полностью действителен. Если у Вас есть интерес к созданию Вашего более портативного кода SQL, Вы могли бы хотеть к варианту использования, который поддерживается с тем же синтаксисом и в Oracle Server и в SQL Server:

select 
  type,craft,
  SUM(
    case when regular is null
         then 0
         else regular
    end
    +
    case when overtime is null
         then 0
         else overtime
    end
  ) as total_hours
from 
  hours_t
group by
  type
 ,craft
order by
  type
 ,craft
4
ответ дан JosephStyons 15 October 2019 в 06:50
поделиться

Необходимо использовать функцию NVL, например,

СУММА (NVL (регулярный, 0) + NVL (сверхурочное время, 0))

1
ответ дан Turnkey 15 October 2019 в 06:50
поделиться
select type, craft, sum(NVL(regular, 0) + NVL(overtime, 0)) as total_hours
from hours_t
group by type, craft
order by type, craft
0
ответ дан Quassnoi 15 October 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: