2 wangrui4585 wangrui4585 于 2017.09.14 14:07 提问

oracle,去重,多条件统计,语句怎么写

图片说明查询条件:
CASE WHEN v.calltype='1' THEN COUNT(DISTINCT v.callid) END num,
CASE WHEN v.isworktime='0' THEN COUNT(DISTINCT v.callid) END num1,
CASE WHEN v.isworktime='1' THEN COUNT(DISTINCT v.callid) END num2,
CASE WHEN v.inivrdt IS NULL AND (v.remark='2' OR v.remark='3') THEN COUNT(DISTINCT v.callid) END num1,
CASE WHEN v.inivrdt IS NOT NULL AND v.isworktime IS NOT NULL THEN COUNT(DISTINCT v.callid) END num3,

        这样语句怎么写

5个回答

phoenix850121
phoenix850121   2017.09.14 14:26

建议你分开统计。CASE WHEN后面的条件没有规律,因此要么在java端写代码统计,要么sql分开统计比较好实现。

phoenix850121
phoenix850121   2017.09.14 14:27

补充下,你建议一个临时表,把符合条件的先查出后插入临时表,最后统计临时表也行。

s951753852
s951753852   2017.09.14 14:29

把符合条件的数据放进虚表(也就是dual表)里,再对虚表进行统计

chen_csdn_long
chen_csdn_long   2017.09.14 15:17

我也来学习下。数据库不是很精通

tiegenZ
tiegenZ   2017.09.24 13:06

去查一下 distinct 这个函数

统计之前 将需要统计的数据去一下重

Csdn user default icon
上传中...
上传图片
插入图片