【问题标题】:Excel 2007 Query editor - greater than functionExcel 2007 查询编辑器 - 大于功能
【发布时间】:2018-09-28 06:51:45
【问题描述】:

我正在尝试在 Excel 2007 SQL 数据库查询编辑器中编辑一些代码。

当前代码为(仅摘录):

(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 小时。我想编辑上面的代码,以便对于大于 24 的任何 Shut_Hours,它在表的该单元格中返回 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

【问题讨论】:

    标签: sql oracle10g


    【解决方案1】:

    你需要一个case语句,例如:

    (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
    

    【讨论】:

      【解决方案2】:

      您可以使用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, 
      

      【讨论】:

      • @Charmaine 。 . .网站礼仪是接受您认为最能回答您的问题的答案。
      猜你喜欢
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多