在使用js報表工具的時候,常常需要提供json數據進行顯示,
在sql查詢的時候就需要構造合適的查詢結果出來;
就用到了合並兩個沒有關聯關系的表數據,
SELECT SUM(a1.amount) AS amount, a1.date FROM ((SELECT SUM(amount) AS amount, DATE_FORMAT(time,'%Y-%m-%d') AS date FROM a GROUP BY date) UNION ALL (SELECT -SUM(b.VALUE) AS s2, DATE_FORMAT(b.time,'%Y-%m-%d') AS d2 FROM b GROUP BY d2)) AS a1 GROUP BY a1.date
//a表收款,b表付款,計算每天的收益(收款-付款)
//根據日期(天)分組,對兩個表中的金額進行計算
//注意時間字段名稱,a表相同位置的字段會覆蓋b表字段名稱,所以使用union要求兩個表有相同的字段
//最后根據合並后時間進行分組,計算收益(計算差)
使用union 或union all
如select * from a union all select * from b 豎排合並兩個表的數據
顯示格式如:
a date
-204 2015-07-06
220 2015-07-15
-60 2015-07-16
220 2015-07-17
//另外一種情況,根據不同條件得到的值賦予不一樣的別名(在不同的列顯示)
SELECT a.date, sum(a.c1) AS s1, SUM(a.c2) AS s2 FROM( SELECT DATE_FORMAT(b.time, '%Y-%m-%d') AS date, IFNULL(( CASE b.sta WHEN 0 THEN COUNT(*) END),0 ) AS c1, IFNULL(( CASE b.sta WHEN 1 THEN COUNT(*) END),0 ) AS c2 FROM b GROUP BY b.sta,date ) AS a GROUP BY a.date
//根據類型sta=0/=1,時間分組,統計個數
得到的數據格式:
date s1 s2
2015-07-06 4 1
2015-07-08 0 1
2015-07-15 0 1
2015-07-16 1 3