日期:2014-05-18  浏览次数:20501 次

求修改一句SELECT 语句!
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 城市)b
where
  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.城市