有两个表
A表
B表
结果1
SELECT IFNULL(MODE,'总计'),2020年8月1日,2020年8月2日,2020年8月2日,2020年8月3日,2020年8月4日,2020年8月5日,8月金额总计
FROM
(
SELECT
a.mode,
SUM(CASE WHEN b.mytime = '2020-08-01' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月1日,
SUM(CASE WHEN b.mytime = '2020-08-02' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月2日,
SUM(CASE WHEN b.mytime = '2020-08-03' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月3日,
SUM(CASE WHEN b.mytime = '2020-08-04' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月4日,
SUM(CASE WHEN b.mytime = '2020-08-05' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月5日,
SUM(CASE WHEN b.mytime LIKE '2020-08%' THEN IFNULL(b.total_price,0) ELSE 0 END) 8月金额总计
FROM
(SELECT * FROM a ORDER BY MODE) AS a
LEFT JOIN
b b
ON a.id = b.pid
GROUP BY a.mode
WITH ROLLUP
) AS TEMP
结果2
SELECT IFNULL(category,'总计'),2020年8月1日,2020年8月2日,2020年8月2日,2020年8月3日,2020年8月4日,2020年8月5日,8月金额总计
FROM
(
SELECT
a.category,
SUM(CASE WHEN b.mytime = '2020-08-01' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月1日,
SUM(CASE WHEN b.mytime = '2020-08-02' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月2日,
SUM(CASE WHEN b.mytime = '2020-08-03' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月3日,
SUM(CASE WHEN b.mytime = '2020-08-04' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月4日,
SUM(CASE WHEN b.mytime = '2020-08-05' THEN IFNULL(b.total_price,0) ELSE 0 END) 2020年8月5日,
SUM(CASE WHEN b.mytime LIKE '2020-08%' THEN IFNULL(b.total_price,0) ELSE 0 END) 8月金额总计
FROM
(SELECT * FROM a ORDER BY category) AS a
LEFT JOIN
b b
ON a.id = b.pid
GROUP BY a.category
WITH ROLLUP
) AS TEMP
问题:
希望得到下面效果,并且导出的表格数据部分需要是“数值”形式而非“文本”形式应该如何写?
试着用过union all 但是达不到这个效果。
感谢各路大神的帮助
结尾再次感谢 jingluan666 、 have_power 曾经给与的帮助 感谢!