日期:2014-05-17 浏览次数:20726 次
select 'stat_time' = '2011-04', 'fixed_net' = count(distinct case certify_user_type when 1 then user_id else null end ) , 'school_net' = count(distinct case certify_user_type when 3 then user_id else null end ), 'differ_net' = count(distinct case certify_user_type when 4 then user_id else null end ), 'wlan_net' = count(distinct case certify_user_type when 5 then user_id else null end ), 'other_net' = count(distinct case certify_user_type when 0 then user_id else null end ), 'oneType_user' = count(distinct case when user_type_id=1 and certify_user_type=2 then user_id else null end ) , 'twoType_user' = count(distinct case when user_type_id=2 and certify_user_type=2 then user_id else null end ), 'threeType_user' = count(distinct case when user_type_id=3 and certify_user_type=2 then user_id else null end ), 'other_user' = count(distinct case when user_type_id=99 and certify_user_type=2 then user_id else null end ), 'local_rom' = count(distinct case romflag when 0 then user_id else null end ), 'out_rom' = count(distinct case romflag when 1 then user_id else null end ), 'in_rom' = count(distinct case romflag when 2 then user_id else null end ), 'nation_out_rom' = count(distinct case romflag when 3 then user_id else null end ), 'nation_in_rom' = count(distinct case romflag when 5 then user_id else null end ) from wlan_auth_user_vlan_2011_04 a
SELECT SUM(MID(t.birthDate,1,2)) FROM test_user t GROUP BY t.age
------解决方案--------------------
select '2011-04' stat_time,
case certify_user_type when 1 then sum(cnt) else 0 end fixed_net,
case certify_user_type when 3 then sum(cnt) else 0 end school_net,
case certify_user_type when 4 then sum(cnt) else 0 end differ_net,
case certify_user_type when 5 then sum(cnt) else 0 end wlan_net,
case certify_user_type when 0 then sum(cnt) else 0 end other_net,
case when user_type_id=1 and certify_user_type=2 then sum(cnt) else 0 end oneType_user
......
select certify_user_type,user_type_id,romflag,count(distinct userid) cnt
from wlan_auth_user_vlan_2011_04 a group by certify_user_type,user_type_id,romflag
没测试,大概意思是这个,对这个结果集再处理下,应该就可以得到你想要的结果了,
你想要的应该是group by 后行转列吧
------解决方案--------------------
select '2011-04' stat_time, case certify_user_type when 1 then sum(cnt) else 0 end fixed_net, case certify_user_type when 3 then sum(cnt) else 0 end school_net, case certify_user_type when 4 then sum(cnt) else 0 end differ_net, case certify_user_type when 5 then sum(cnt) else 0 end wlan_net, case certify_user_type when 0 then sum(cnt) else 0 end other_net, case when user_type_id=1 and certify_user_type=2 then sum(cnt) else 0 end oneType_user ...... from ( select certify_user_type,user_type_id,romflag,count(distinct userid) cnt from wlan_auth_user_vlan_2011_04 a group by certify_user_type,user_type_id,romflag ) t
------解决方案--------------------
LZ 去数据库版可能会得到更好的答案。
------解决方案--------------------