日期:2014-05-18 浏览次数:20520 次
select 城市,类型, 正确=sum(case when 结果='正确' then 票数 else 0 end), 错误=sum(case when 结果='错误' then 票数 else 0 end), 总计=sum(票数),达标率=ltrim(cast(sum(case when 结果='正确' then 票数 else 0 end)*1.0/sum(票数)*100 as numeric(18,2)))+'%' from ZS_kpi group by 城市,类型 得如下结果 /* 城市 类型 正确 错误 总计 达标率 武汉 错误 128 0 128 100.00% 深圳 错误 70 45 115 60.87% 广州 错误 632 32 664 95.18% 深圳 正确 1535 12 1547 99.22% 武汉 正确 1377 4 1381 99.71% 上海 正确 3146 38 3184 98.81% 长沙 错误 436 11 447 97.54% 广州 正确 3560 59 3619 98.37% 长沙 正确 1498 293 1791 83.64% 上海 错误 518 1 519 99.81% */ 现在想得如查结果 /* 城市 城市汇总 类型 正确 错误 总计 达标率 武汉 1509 错误 128 0 128 100.00% 深圳 1662 错误 70 45 115 60.87% 广州 4283 错误 632 32 664 95.18% 深圳 1662 正确 1535 12 1547 99.22% 武汉 1509 正确 1377 4 1381 99.71% 上海 3703 正确 3146 38 3184 98.81% 长沙 2238 错误 436 11 447 97.54% 广州 4283 正确 3560 59 3619 98.37% 长沙 2238 正确 1498 293 1791 83.64% 上海 3703 错误 518 1 519 99.81% */ 多了一例城市汇总,根据城市->汇总 后面的总计数量.求助!!!
select a.城市,b.城市汇总,a.类型, 正确=sum(case when a.结果='正确' then 票数 else 0 end), 错误=sum(case when a.结果='错误' then 票数 else 0 end), 总计=sum(a.票数), 达标率=ltrim(cast(sum(case when a.结果='正确' then a.票数 else 0 end)*1.0/sum(a.票数)*100 as numeric(18,2)))+'%' from ZS_kpi a, (select 城市,sum(票数) as 城市汇总 from ZS_kpi group by 城市)b where a.城市=b.城市 group by a.城市,a.类型
------解决方案--------------------
select a.城市,b.总计数量 as 城市汇总,a.类型,a.正确,a.错误,a.总计,a.达标率 from( select 城市,类型, 正确=sum(case when 结果='正确' then 票数 else 0 end), 错误=sum(case when 结果='错误' then 票数 else 0 end), 总计=sum(票数),达标率=ltrim(cast(sum(case when 结果='正确' then 票数 else 0 end)*1.0/sum(票数)*100 as numeric(18,2)))+'%' from ZS_kpi group by 城市,类型 )a inner join (select 城市,sum(票数) as 总计数量 from zs_kpi group by 城市)b on a.城市=b.城市