SELECT
a.sjtjsj,
a.JSBHS,
a.ZQSYGZR,
a.zt_dr_hs,
a.zt_dr_jd,
( @sum0 := @sum0 + a.zt_dr_hs ) AS zt_lj_hs,
ROUND( @sum0 / a.JSBHS * 100, 0 ) AS zt_lj_jd,
a.dzswj_dr_hs,
a.dzswj_dr_jd,
( @sum1 := @sum1 + a.dzswj_dr_hs ) AS dzswj_lj_hs,
ROUND( @sum1 / @sum0 * 100, 0 ) AS dzswj_lj_jd,
a.bsfwt_dr_hs,
a.bsfwt_dr_jd,
( @sum2 := @sum2 + a.bsfwt_dr_hs ) AS bsfwt_lj_hs,
ROUND( @sum2 / @sum0 * 100, 0 ) AS bsfwt_lj_jd,
a.qt_dr_hs,
a.qt_dr_jd,
( @sum3 := @sum3 + a.qt_dr_hs ) AS qt_lj_hs,
ROUND( @sum3 / @sum0 * 100, 0 ) AS qt_lj_jd
FROM
(
SELECT
DATE_FORMAT( sjtjsj, "%Y-%m-%d" ) sjtjsj,
JSBHS JSBHS,
ZQSYGZR ZQSYGZR,
SUM( YSBHS ) 'zt_dr_hs',
ROUND( SUM( YSBHS ) / JSBHS * 100, 0 ) 'zt_dr_jd',
sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) AS 'dzswj_dr_hs',
ROUND( sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) 'dzswj_dr_jd',
sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) AS 'bsfwt_dr_hs',
ROUND( sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) 'bsfwt_dr_jd',
(
SUM( YSBHS ) - sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) - sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END )
) AS 'qt_dr_hs',
(
100 - ROUND( sum( CASE QDLXMC WHEN '电子税务局' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 ) - ROUND( sum( CASE QDLXMC WHEN '办税服务厅' THEN YSBHS ELSE 0 END ) / SUM( YSBHS ) * 100, 0 )
) AS 'qt_dr_jd'
FROM
t_cfsb_fsz_day
WHERE
sjtjsj LIKE concat(#{sjtjMonth},'%')
AND swjg_dm = #{swjgDm}
AND ZSXM_DM = #{zsxmDm}
GROUP BY
DATE_FORMAT( sjtjsj, "%Y-%m-%d" )
) a
, (select @sum0 := 0,
@sum1 := 0,
@sum2 := 0,
@sum3 := 0) t
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
@sum1 @sum2 @sum3 是临时变量