SQL计算百分比的问题

MSSQL2000表名tab:QDSPSLJE广东10014000500000广东100260001500000广西1006100065000广西123570001000... MSSQL2000
表名tab:
QD SP SL JE
广东 1001 4000 500000
广东 1002 6000 1500000
广西 1006 1000 65000
广西 1235 7000 100000

select isnull(convert(varchar(20),QD),'合计') as 'QD',sum(SL) as 'total_SL',sum(JE) as 'total_JE'
from tab
group by QD with rollup

得出结果:
QD Total_SL Total_JE
广东 10000 2000000
广西 8000 165000
合计 18000 2165000

请问,如何让结果变为如下:
QD Total_SL PER_SL Total_JE PER_JE
广东 10000 55.56% 2000000 92.38%
广西 8000 44.44% 165000 7.62%
合计 18000 100% 2165000 100%

希望尽量用语句搞定,不要用视图,谢谢!
展开
 我来答
17号观察室
2013-07-03 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1326万
展开全部

--表名换成你的结果集

--有什么问题可以随时找我 希望采纳 你自己调一下顺序 

select *,round((Total_SL*100.00/(select Total_SL from tbname where QD='合计')),2) PER_SL ,

round((Total_JE*100.00/(select Total_JE from tbname where QD='合计')),2) PER_JE  from tbname

更多追问追答
追问
将我的语句生成视图tbname

然后再执行你的语句,可以得出我想要的结果,正如你如图所示。
请问如果不用视图要怎么写呢?

因为,其实最上面的TAB其实也是一个视图,视图再套视图,这个应该会很影响效率吧。
求解。谢谢!
追答
其实是一个道理的 你有那么多嵌套 写子查询效果差不多哦
TableDI
2024-07-18 广告
Excel表格中的计数函数主要用于统计单元格区域中满足特定条件的数值或非空单元格的数量。最常用的计数函数是`COUNT`和`COUNTA`。`COUNT`函数用于统计选定区域内数值型单元格的数量,忽略文本和空单元格。而`COUNTA`函数则... 点击进入详情页
本回答由TableDI提供
zxd9915
2013-07-03 · TA获得超过299个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:208万
展开全部
SELECT QD, total_SL, ROUND(total_SL * 100 /
(SELECT SUM(sl)
FROM tab), 2) AS per_sl, total_JE, ROUND(total_JE * 100 /
(SELECT SUM(je)
FROM tab), 2) AS per_je
FROM (SELECT ISNULL(CONVERT(varchar(20), qd), '合计') AS QD, SUM(sl) AS total_SL,
SUM(je) AS total_JE
FROM tab
GROUP BY qd) a
追问
'a' 附近有语法错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式