sql 合並查詢結果


在使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM