簡體   English   中英

如何使用兩個sql表獲取不匹配的列和匹配的列

[英]How to get none matching columns and matching columns with two sql tables

我有兩個表的收入和支出,我想將不匹配的列包括到第三個表中,這樣我就可以對收入和支出進行匯總和分組,並將收入列相加以獲得總計和支出列總計

             incomes table                                 expenses table
    -----------------------------------        ------------------------------------
    | incomeId |    date     | amount |        | expenseId |    date     | amount |
    +---------------------------------+        +----------------------------------+
    | 1        | 2/4/2020    | 3000   |        |  1        | 8/4/2020    | 3000   | 
    | 2        | 9/4/2020    | 9000   |        |  2        | 23/4/2020   | 3500   |
    | 3        | 15/9/2020   | 15000  |        |  1        | 9/3/2020    | 2000   |
    | 4        | 7/3/2020    | 7000   |        ------------------------------------
    ------------------------------------


                 Expected table Results
        ------------------------------------
        | Month     | Income     | Expense |
        +----------------------------------+
        | March     | 7000       | 2000    | 
        | April     | 12000      | 6500    |
        | September | 15000      |         |
        +==================================+
        | Total     | 34000      |  8500   |
        ====================================

SQL

  SELECT 
        Income.Month, 
        Income.Income, 
        Expense.Expense
      FROM(
            SELECT 
                DATE_FORMAT(date,'%M') AS Month, 
                SUM(amount) AS Income
            FROM income
            GROUP BY DATE_FORMAT(date, '%M')
           ) AS Incomes
      JOIN
          (
            SELECT
                  DATE_FORMAT(date,'%M') AS Month,
                  SUM(amount) AS Expense
            FROM expenses
            GROUP BY DATE_FORMAT(date, '%M') 
          ) AS Expense
       ON Expense.Month = Income.Month

如果您想在兩個表上都允許缺少日期,您可以使用union all模擬full join

select year(date) yr, month(date) mn, sum(income) income, sum(expense) expense
from (
    select date, amount income, null expense from incomes
    union all
    select date, null, amount from expenses
) t
group by year(date), month(date)
with rollup

暫無
暫無

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

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