- SQL code
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% */多了一例城市汇总,根据城市->汇总 后面的总计数量.求助!!!
------解决方案--------------------
- SQL code
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 城市)bwhere a.城市=b.城市group by a.城市,a.类型
------解决方案--------------------
- SQL code
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.城市