具有不同标准的两个聚合函数

时间:2013-05-23 15:54:11

标签: oracle case aggregate

我喜欢在COUNT Statement的帮助下在一个SQL语句中使用两个聚合函数(SUMCASE WHEN)。我的代码是这样的:

CASE
      WHEN    (   (   (   (   (CSSC_MASTER_VIEW.ORDER_TYPE = 'OR')
                           OR (OCSSC_MASTER_VIEW.ORDER_TYPE = 'KB'))
                       OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'KE'))
                   OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'OR-TAT'))
               OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'QT-TAT'))
           OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'QT')
      THEN
         COUNT((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))

      ELSE
         SUM((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))
   END
      AS Lines_processed

此代码提供错误“Oracle数据库错误:ORA-00900:无效的SQL语句”

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

删除

中的double()
((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))

SUM((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))

哦和

CASE WHEN (CSSC_MASTER_VIEW.ORDER_TYPE IN ('OR', 'KB', 'KE', 'OR-TAT', 'QT-TAT', 'QT'))
  THEN COUNT(CSSC_MASTER_VIEW.ORDER_LINE_NUMBER)
  ELSE SUM(CSSC_MASTER_VIEW.ORDER_LINE_NUMBER)
END
AS Lines_processed

也应该工作

答案 1 :(得分:0)

看起来你如何嵌套WHEN子句中的表达式是什么在扼杀你;尝试摆脱该陈述中的所有括号

编辑:或者,更好的是,使用像vc 74建议的IN语句。