[英]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.