Mysql通過UNION完成總計

  SELECT
        C1,
        C3 ,
        C4  ,
        C5  ,
        C6  ,
        C7  ,
        C8  ,
        C9  ,
        C10  ,
        C11  ,
        C12  ,
        C13  ,
        C14  ,
        C15  ,
        C16  ,
        C17  ,
        C18  ,
        C19  
    FROM
        ( SELECT
            b.sec_dept_short_name AS c1,
            b.sec_dept_code AS c2 ,
            SUM(IF(a.bj_id,
            1,
            0)) AS c3,
            SUM(CASE
                WHEN bj_type=1 THEN 1
                ELSE 0
            END) AS c4,
            SUM(CASE
                WHEN bj_type=2 THEN 1
                ELSE 0
            END) AS c5,
            SUM(CASE
                WHEN bj_type=3 THEN 1
                ELSE 0
            END) AS c6,
            SUM(CASE
                WHEN is_passed=0 THEN 1
                ELSE 0
            END) AS c7,
            SUM(CASE
                WHEN is_passed=1 THEN 1
                ELSE 0
            END) AS c8,
            SUM(CASE
                WHEN is_changed=0 THEN 1
                ELSE 0
            END) AS c9,
            SUM(CASE
                WHEN is_changed=1 THEN 1
                ELSE 0
            END) AS c10,
            SUM(CASE
                WHEN has_fw=0 THEN 1
                ELSE 0
            END) AS c11,
            SUM(CASE
                WHEN has_fw=1 THEN 1
                ELSE 0
            END) AS c12,
            SUM(CASE
                WHEN has_gate=0 THEN 1
                ELSE 0
            END) AS c13,
            SUM(CASE
                WHEN has_gate=1 THEN 1
                ELSE 0
            END) AS c14,
            SUM(CASE
                WHEN has_gap=0 THEN 1
                ELSE 0
            END) AS c15,
            SUM(CASE
                WHEN has_gap=1 THEN 1
                ELSE 0
            END) AS c16,
            SUM(CASE
                WHEN a.bj_id IS NOT NULL
                AND other_info IS NOT NULL  
                AND other_info <> '' THEN 1
                ELSE 0
            END) AS c17,
            SUM(CASE
                WHEN a.bj_id IS NOT NULL
                AND ( other_info IS NULL
                OR other_info ='') THEN 1
                ELSE 0
            END) AS c18,
            SUM(IF(AA.BJ_ID,
            1,
            0))  AS c19  
        FROM
            bj_base_info a
        RIGHT OUTER JOIN
            tbl_basic_security_dept b
                ON a.sf=b.sec_dept_short_name  
        LEFT JOIN
            (
                SELECT
                    BJ_BASE_INFO.BJ_ID   
                FROM
                    BJ_BASE_INFO     
                WHERE
                    EXISTS  (
                        SELECT
                            1
                        FROM
                            BJ_YW_INFO YW
                        WHERE
                            YW.BJ_ID = BJ_BASE_INFO.BJ_ID
                            AND NETWORK_TYPE = 2  
                            AND data_exchange IN (
                                2,3
                            )
                    )  
                ) AA
                    ON (
                        AA.BJ_ID = A.BJ_ID
                    )  
            LEFT JOIN
                (
                    SELECT
                        BJ_BASE_INFO.BJ_ID   
                    FROM
                        BJ_BASE_INFO    
                    WHERE
                        EXISTS  (
                            SELECT
                                1
                            FROM
                                BJ_YW_INFO YW
                            WHERE
                                YW.BJ_ID = BJ_BASE_INFO.BJ_ID
                                AND NETWORK_TYPE = 2  
                                AND  data_exchange NOT IN (
                                    2,3
                                )
                        )  
                    ) BB
                        ON (
                            BB.BJ_ID = A.BJ_ID
                        )  
                WHERE
                    b.upper_dept=2
                    AND 1=1  
                    AND b.sec_dept_short_name IN (
                        '公安部直屬單位','北京市','天津市','河北省','山西省','內蒙古自治區','遼寧省','吉林省','黑龍江省','上海市','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','廣西壯族自治區','海南省','重慶市','四川省','貴州省','雲南省','西藏自治區','陝西省','甘肅省','青海省','寧夏回族自治區','新疆維吾爾自治區','新疆生產建設兵團'
                    )  
                GROUP BY
                    b.sec_dept_short_name ,
                    b.sec_dept_code    
                UNION
                SELECT
                    '總計' AS c1,
                    '999999999999' AS c2,
                    SUM(IF(a.bj_id,
                    1,
                    0)) AS c3,
                    SUM(CASE
                        WHEN bj_type=1 THEN 1
                        ELSE 0
                    END) AS c4,
                    SUM(CASE
                        WHEN bj_type=2 THEN 1
                        ELSE 0
                    END) AS c5,
                    SUM(CASE
                        WHEN bj_type=3 THEN 1
                        ELSE 0
                    END) AS c6,
                    SUM(CASE
                        WHEN is_passed=0 THEN 1
                        ELSE 0
                    END) AS c7,
                    SUM(CASE
                        WHEN is_passed=1 THEN 1
                        ELSE 0
                    END) AS c8,
                    SUM(CASE
                        WHEN is_changed=0 THEN 1
                        ELSE 0
                    END) AS c9,
                    SUM(CASE
                        WHEN is_changed=1 THEN 1
                        ELSE 0
                    END) AS c10,
                    SUM(CASE
                        WHEN has_fw=0 THEN 1
                        ELSE 0
                    END) AS c11,
                    SUM(CASE
                        WHEN has_fw=1 THEN 1
                        ELSE 0
                    END) AS c12,
                    SUM(CASE
                        WHEN has_gate=0 THEN 1
                        ELSE 0
                    END) AS c13,
                    SUM(CASE
                        WHEN has_gate=1 THEN 1
                        ELSE 0
                    END) AS c14,
                    SUM(CASE
                        WHEN has_gap=0 THEN 1
                        ELSE 0
                    END) AS c15,
                    SUM(CASE
                        WHEN has_gap=1 THEN 1
                        ELSE 0
                    END) AS c16,
                    SUM(CASE
                        WHEN a.bj_id IS NOT NULL
                        AND other_info IS NOT NULL
                        AND other_info <> '' THEN 1
                        ELSE 0
                    END) AS c17,
                    SUM(CASE
                        WHEN a.bj_id IS NOT NULL
                        AND (other_info IS NULL
                        OR other_info ='') THEN 1
                        ELSE 0
                    END) AS c18,
                    SUM(IF(AA.BJ_ID,
                    1,
                    0))  AS c19  
                FROM
                    bj_base_info a
                RIGHT OUTER JOIN
                    tbl_basic_security_dept b
                        ON a.sf=b.sec_dept_short_name  
                LEFT JOIN
                    (
                        SELECT
                            BJ_BASE_INFO.BJ_ID   
                        FROM
                            BJ_BASE_INFO     
                        WHERE
                            EXISTS  (
                                SELECT
                                    1
                                FROM
                                    BJ_YW_INFO YW
                                WHERE
                                    YW.BJ_ID = BJ_BASE_INFO.BJ_ID
                                    AND NETWORK_TYPE = 2  
                                    AND  data_exchange IN (
                                        2,3
                                    )
                            )  
                        ) AA
                            ON (
                                AA.BJ_ID = A.BJ_ID
                            )  
                    LEFT JOIN
                        (
                            SELECT
                                BJ_BASE_INFO.BJ_ID   
                            FROM
                                BJ_BASE_INFO    
                            WHERE
                                EXISTS  (
                                    SELECT
                                        1
                                    FROM
                                        BJ_YW_INFO YW
                                    WHERE
                                        YW.BJ_ID = BJ_BASE_INFO.BJ_ID
                                        AND NETWORK_TYPE = 2  
                                        AND data_exchange NOT IN (
                                            2,3
                                        )
                                )  
                            ) BB
                                ON (
                                    BB.BJ_ID = A.BJ_ID
                                )  
                        WHERE
                            b.upper_dept=2
                            AND 1=1  
                            AND b.sec_dept_short_name IN (
                                '公安部直屬單位','北京市','天津市','河北省','山西省','內蒙古自治區','遼寧省','吉林省','黑龍江省','上海市','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','廣西壯族自治區','海南省','重慶市','四川省','貴州省','雲南省','西藏自治區','陝西省','甘肅省','青海省','寧夏回族自治區','新疆維吾爾自治區','新疆生產建設兵團'
                            )
                        ORDER BY
                            2
                    ) A


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章