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%
希望尽量用语句搞定,不要用视图,谢谢! 展开
表名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%
希望尽量用语句搞定,不要用视图,谢谢! 展开
2个回答
展开全部
更多追问追答
追问
将我的语句生成视图tbname
然后再执行你的语句,可以得出我想要的结果,正如你如图所示。
请问如果不用视图要怎么写呢?
因为,其实最上面的TAB其实也是一个视图,视图再套视图,这个应该会很影响效率吧。
求解。谢谢!
追答
其实是一个道理的 你有那么多嵌套 写子查询效果差不多哦
展开全部
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
(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' 附近有语法错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询