【问题标题】:How to divide that in this situation在这种情况下如何划分
【发布时间】:2019-04-10 08:45:44
【问题描述】:

我有一个问题,将 TOT_MGCV_USE_QTY 划分为 60。顺便说一下,我的英语不是很好。大佬们帮帮我

COUNT(CASE
      WHEN SERVICE_TYPE IN (0, 100)
      AND TOT_MGCV_USE_QTY / 60
      THEN RECIPIENT END) AS MOC_VOICE_CHARGED_DURATION

【问题讨论】:

  • 您要检查 TOT_MGCV_USE_QTY 是否可以除以 60 没有余数?
  • 请发布一些示例数据和所需结果(格式化文本,非图像)以阐明您的需求

标签: sql oracle stored-procedures plsql


【解决方案1】:

根据提供的sql,以下是我的理解: 您只想在服务类型为 (0,100) 且 TOT_MGCV_USE_QTY 可被 60 整除时计算收件人数,即,其余数为零... 如果是这种情况,那么我们可以将要求用作 where 条件,如下所示...(如果需要,也可以根据 case 语句的要求进行更改)

select count(receipient)
from  ...
...
where
....
service_type in (0,100)
and mod(TOT_MGCV_USE_QTY,60) = 0
....;



【讨论】:

    【解决方案2】:

    你还没有检查(TOT_MGCV_USE_QTY / 60)这个有任何值

        COUNT (CASE
          WHEN SERVICE_TYPE IN (0, 100)
          AND (TOT_MGCV_USE_QTY / 60)=some_value
          THEN RECIPIENT END
          ) AS MOC_VOICE_CHARGED_DURATION
    

    我会像下面这样重写您的查询

         sum (CASE
          WHEN SERVICE_TYPE IN (0, 100)
          AND (TOT_MGCV_USE_QTY / 60)=some_value
          THEN 1 else 0 END
          ) AS MOC_VOICE_CHARGED_DURATION
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2015-11-30
      • 2017-05-16
      相关资源
      最近更新 更多