简体   繁体   English

MySQL union和sum两个表

[英]MySQL union and sum two table

I need a solution for display same day records and show SUM of each column, so far I have a query to show union records like: 我需要一个显示当天记录的解决方案并显示每列的SUM,到目前为止我有一个查询来显示联合记录,如:

SELECT 
    datetime, 
    remarks, 
    void, 
    invoice, 
    reload, 
    redeem 
FROM
    (
      SELECT datetime, remarks, '' void, '' invoice, points_intake reload, '' redeem, 1 ord
      FROM bpp_intake_logs
      WHERE outlet = 'KUL' AND DATE(datetime) = '2017-06-13'
      UNION ALL

      SELECT datetime, remarks, void, invoice, '', points_consume, 2
      FROM bpp_consume_logs
      WHERE outlet = 'KUL' AND DATE(datetime) = '2017-06-13' 
    ) q
ORDER BY datetime DESC, ord 

and the result table is show like: 结果表显示如下:

datetime            | remarks                        | void | invoice  | reload | redeem |
2017-06-13 15:53:31 | Point restored - void XY203460 |      |          | 10     |        |
2017-06-13 15:37:27 | reload / top-up credit         |      |          | 10     |        |
2017-06-13 15:35:56 | redeem from VIP card           |  1   | XY203460 |        | 10     |
2017-06-13 15:16:03 | redeem from VIP card           |      | XY203456 |        | 5      |

Now, I wanted to add a cell to sum each reload and redeem at the bottom of its belonging column, like: 现在,我想添加一个单元格来对每个reload进行求和并在其所属列的底部进行redeem ,例如:

datetime            | remarks                        | void | invoice  | reload | redeem |
2017-06-13 15:53:31 | Point restored - void XY203460 |      |          | 10     |        |
2017-06-13 15:37:27 | reload / top-up credit         |      |          | 10     |        |
2017-06-13 15:35:56 | redeem from VIP card           |  1   | XY203460 |        | 10     |
2017-06-13 15:16:03 | redeem from VIP card           |      | XY203456 |        | 5      |
                                                                       | 20     | 15     |

As seen, SUM 20 and 15 are allocated at the bottom cell. 如图所示,SUM 2015分配在底部单元格中。

Is that possible to get a results in this way? 这有可能以这种方式获得结果吗?

Perhaps this is what youre looking for???? 也许这就是你要找的????

SELECT 
datetime, 
remarks, 
void, 
invoice, 
SUM(reload), 
SUM(redeem) 
FROM
(
  SELECT datetime, remarks, '' void, '' invoice, points_intake reload, '' redeem, 1 ord
  FROM bpp_intake_logs
  WHERE outlet = 'KUL' AND DATE(datetime) = '2017-06-13'
  UNION ALL

  SELECT datetime, remarks, void, invoice, '', points_consume, 2
  FROM bpp_consume_logs
  WHERE outlet = 'KUL' AND DATE(datetime) = '2017-06-13' 
) q
GROUP BY datetime desc, remarks asc, void asc, invoice asc with rollup

ORDER BY datetime DESC, ord 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM