Редактор запросов Excel 2007 - больше, чем функция - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь отредактировать некоторый код в редакторе запросов базы данных SQL 2007.

Текущий код (только выдержка):

(Select NVL(Sum(Shut_Hours),0) 
   From Shut_Hrs_Calc SHC2 
  Where BDT.Prod_Day=SHC2.Prod_Day And SHC2.Equipment_ID = 1006) As CD1C, 

Код должен возвращаться только закрытымчасов по дате в каждой ячейке таблицы (Shut_Hrs_Calc), которые меньше или равны 24 часам, однако он возвращает значения, превышающие 24 часа.Я хочу отредактировать приведенный выше код так, чтобы для любого значения Shut_Hours больше 24 он возвращал значение 24 в этой ячейке таблицы.Если оно не больше 24, верните это значение.Если null возвращает 0 (как уже делает текущий код).

Помощь будет принята с благодарностью и заранее спасибо.

Пример таблицы ниже:

MAINT_DATE  CD1C
27/09/2018  0
28/09/2018  0
29/09/2018  0
30/09/2018  0
1/10/2018   0
2/10/2018   0
3/10/2018   0
4/10/2018   0
5/10/2018   0
6/10/2018   0
7/10/2018   0
8/10/2018   0
9/10/2018   0
10/10/2018  0
11/10/2018  0
12/10/2018  0
13/10/2018  0
14/10/2018  13
15/10/2018  25
16/10/2018  35
17/10/2018  24
18/10/2018  24
19/10/2018  16

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы можете сделать это, используя least() и coalesce():

(Select least(coalesce(Sum(Shut_Hours), 0), 24)
 From Shut_Hrs_Calc SHC2 
 Where BDT.Prod_Day = SHC2.Prod_Day And 
       SHC2.Equipment_ID = 1006
) As CD1C, 
0 голосов
/ 28 сентября 2018

Вам нужен регистр, например:

(Select case when sum(Shut_Hours) > 24 then 24
             else nvl(sum(shut_hours), 0)
        end 
 From Shut_Hrs_Calc SHC2 
 Where BDT.Prod_Day=SHC2.Prod_Day And SHC2.Equipment_ID = 1006) As CD1C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...