簡體   English   中英

SQL Query按月分組2個表

[英]SQL Query join 2 tables group by month

我有2個表1分別命名為Despesas和其他命名為Receitas,均具有日期和值字段。 我想總結按月和年分組的值。 我已經試過了

SELECT
    MONTHNAME(DATA) AS m,
    sum(valor) AS p

FROM
    despesas

GROUP BY 
MONTHNAME(DATA)

但我不知道如何像這樣將兩者都合並到一個表中

----------------------------------------
-  MONTH - SUM DESPESAS - SUM RECEITAS - 
- JANUARY - 10432.2     -  103.3       -
- MARCH    - 102.2      -   0          -
- APRIL    - 101.2      -    4         -
----------------------------------------

大概嘗試如下: 分別獲取SUM()值,然后可以在公共列DATAJOIN兩個表。 請參閱您提供的提琴修改過的http://sqlfiddle.com/#!9/cd9f9/6

SELECT
    MONTHNAME(d.DATA) AS Month_Name,
    sum(d.valor) AS Despesas_Sum_Valor,
    xx.Receitas_Sum_Valor
FROM
    despesas d JOIN (
SELECT DATA, 
sum(valor) AS Receitas_Sum_Valor
FROM Receitas

GROUP BY MONTHNAME(DATA) ) xx 
ON MONTHNAME(d.DATA) = MONTHNAME(xx.DATA)
GROUP BY 
MONTHNAME(DATA);
drop table if exists t1;
create table t1 (date date, val int);
insert into t1 values ("2015-01-02", 1), ("2015-01-25", 2), ("2015-02-02", 3);
drop table if exists t2;
create table t2 (date date, val int);
insert into t2 values ("2015-01-15", 1), ("2015-02-10", 2), ("2015-03-01", 3);

select monthname(date), sum(val1) DESPESAS, sum(val2) RECEITAS 
   from (
     select date, val1, val2 
        from (select date, val val1, 0 val2 
                 from t1) s1  
              union 
              (select date m, 0 val1, val val2 
                 from t2 ) ) t 
   group by month(date) 
   order by date

結果

monthname(date) DESPESAS    RECEITAS
January         3           1
February        3           2
March           0           3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM