如何连接两个查询结果并按列对其进行分组

kadbb459  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(216)

我有一个由并集连接的查询,它分别在行中给我提供了理想的结果我想连接这两行并添加它的值,但我不知道该怎么做查询是

SELECT 
    `b`.`main_code`,
    `b`.`account_title`,
    SUM(CASE
        WHEN
            `a`.`type` = 'CP'
                AND `a`.`interactive_person` = '6'
                AND `a`.`date` BETWEEN '2018-02-12' AND '2018-07-31'
        THEN
            `a`.`balance`
        ELSE 0
    END) AS `credit`,
    SUM(CASE
        WHEN
            `a`.`type` = 'CR'
                AND `a`.`interactive_person` = '6'
                AND `a`.`date` BETWEEN '2018-02-12' AND '2018-07-31'
        THEN
            `a`.`balance`
        ELSE 0
    END) AS `debit`,
    SUM(CASE
        WHEN
            `a`.`type` = 'CR'
                AND `a`.`interactive_person` = '6'
                AND `a`.`date` BETWEEN '2018-02-12' AND '2018-07-31'
        THEN
            `a`.`balance`
        WHEN `a`.`type` = 'CP' THEN - 1 * `a`.`balance`
        ELSE 0
    END) AS `balance`
FROM
    `vouchers` AS `a`,
    `data` AS `b`
WHERE
    `a`.`interactive_person` = '6'
        AND `a`.`post_status` = 'yes'
        AND `a`.`interactive_person` = `b`.`main_code`
        AND `a`.`date` BETWEEN '2018-02-12' AND '2018-07-31' 
UNION SELECT 
    `b`.`main_code`,
    `b`.`account_title`,
    IFNULL(SUM(`a`.`debit`), 0) AS `debit`,
    IFNULL(SUM(`a`.`credit`), 0) AS `credit`,
    (`debit` - `credit`) AS `balance`
FROM
    `journal_vouchers` AS `a`,
    `data` AS `b`
WHERE
    `a`.`account_id` = '44'
        AND `a`.`date` BETWEEN '2018-02-12' AND '2018-07-31'
        AND `post_status` = 'yes'
        AND `cancel_status` = 'off'
        AND `a`.`account_id` = `b`.`account_code`
GROUP BY `b`.`main_code`;

这个查询有点复杂,让我解释一下:这个查询从3个表中获取结果,但最主要的是,在并集之前,它从两个表中获取结果,在并集之后,从其中一个表中获取两个表的结果 data 与两者互动。总之,我得到的结果是

+-----------+---------------+--------+-------+---------+
| main_code | account_title | credit | debit | balance |
+-----------+---------------+--------+-------+---------+
|     6     |  cash account |  5200  |  520  |  -4680  |
+-----------+---------------+--------+-------+---------+
|     6     |  cash account |    0   |  200  |  -200   |
+-----------+---------------+--------+-------+---------+

我想完整的查询分组的主代码,但我不知道它我想要的结果是什么

6  | cash account | 5200 | 320 | -4880

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题