case group oracle,ORA-00937——Oracle中GROUP BY搭配CASE WHEN的一则SQL报错

需要将原始语句改成列传行,原始语句如下:

ed15482df6c0d0cbcfc904e72ba97db8.png

写了一个SQL,语句是这样的

select to_char('countdate', 'YYYY-MM-DD') "日期",

count(case

when activetime > 60 * 60 then

count(1)

end) ">=1h",

count(case

when activetime > 120 * 60 then

count(1)

end) ">=2h",

count(case

when activetime > 180 * 60 then

count(1)

end) ">=3h",

count(case

when activetime > 240 * 60 then

count(1)

end) ">=4h",

count(case

when activetime > 300 * 60 then

count(1)

end) ">=5h",

count(case

when activetime > 360 * 60 then

count(1)

end) ">=6h"

from ELMP_ANALYSIS_LOGINTIMEDETAIL

where activetime > 60 * 60

and countdate between to_date('&1', 'YYYY-MM-DD') and

to_date('&2', 'YYYY-MM-DD')

group by to_char('countdate', 'YYYY-MM-DD')

order by 1;

执行的时候,一直报错ORA-00937,仔细检查,发现在count里面还套了一层count,导致报错,修改后的语句如下:

select countdate "日期" count(case

when activetime > 60 * 60 then

activetime

end) ">=1h",

count(case

when activetime > 120 * 60 then

activetime

end) ">=2h",

count(case

when activetime > 180 * 60 then

activetime

end) ">=3h",

count(case

when activetime > 240 * 60 then

activetime

end) ">=4h",

count(case

when activetime > 300 * 60 then

activetime

end) ">=5h",

count(case

when activetime > 360 * 60 then

activetime

end) ">=6h"

from

ELMP_ANALYSIS_LOGINTIMEDETAIL

where

activetime > 60 * 60

and

countdate between to_date('&1', 'YYYY-MM-DD') and

to_date('&2', 'YYYY-MM-DD')

group

by countdate

order by 1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值