select calling_device as cd,dnis_area as da, answer_duration as ad,count(*) as cnt from call_master group by calling_device,dnis_area,answer_duration得出第三列的值的意义在于区分大于0和等于0,数字并无意义;第四列cnt为合计列cd da as cnt6003 2 0 1
6006 3 7898 1
8001 0 0 1
8001 0 11 1
8001 0 32 1
8001 0 33 1
8001 0 36 1
8001 0 38 2
8001 2 0 1
8001 3 432 1
8001 3 456 1
8001 3 8789 1
8001 4 343 1
8001 4 879 1
8002 0 145 1能否区分第三列 区分为=0 和>0 第四列则变成合计分组前两列后 根据第三列=0或是>0计算合计多少条记录即 sql结果变成cd da as cnt6003 2 =0 1
6006 3 >0 1
8001 0 =0 1
8001 0 >0 6
8001 2 =0 1
8001 3 >0 3
8001 4 >0 2
8002 0 >0 1
6006 3 7898 1
8001 0 0 1
8001 0 11 1
8001 0 32 1
8001 0 33 1
8001 0 36 1
8001 0 38 2
8001 2 0 1
8001 3 432 1
8001 3 456 1
8001 3 8789 1
8001 4 343 1
8001 4 879 1
8002 0 145 1能否区分第三列 区分为=0 和>0 第四列则变成合计分组前两列后 根据第三列=0或是>0计算合计多少条记录即 sql结果变成cd da as cnt6003 2 =0 1
6006 3 >0 1
8001 0 =0 1
8001 0 >0 6
8001 2 =0 1
8001 3 >0 3
8001 4 >0 2
8002 0 >0 1
cd,da,case when ad>0 then '>0' when ad=0 then '=0' end ad,
sum(cnt) cnt
from
(
select calling_device as cd,dnis_area as da, answer_duration as ad,count(*) as cnt from call_master group by calling_device,dnis_area,answer_duration
)a
group by cd,da,ad
上面敲错了。不好意思:
应该是
select
cd,da,case when ad>0 then '>0' when ad=0 then '=0' end ad,
sum(cnt) cnt
from
(
select calling_device as cd,dnis_area as da, answer_duration as ad,count(*) as cnt from call_master group by calling_device,dnis_area,answer_duration
)agroup by cd,da,case when ad>0 then '>0' when ad=0 then '=0' end