Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да спрем това повторение и групиране по дата

Трябва да използвате UNION в подзаявката и след това GROUP BY в SELECT:

SELECT my_date, 
       my_month, 
       SUM(credit), 
       SUM(debit)
FROM (
    SELECT cc.credit_date as my_date,
           MONTHNAME(cc.credit_date) as my_month,
           ROUND(SUM(IFNULL(cc.credit_amount,0)),2) AS credit,
           0 AS debit
    FROM   cust_credit cc
    WHERE YEAR(cc.credit_date) = YEAR(NOW()) 
    GROUP BY cc.credit_date,
             MONTHNAME(cc.credit_date)
    UNION
    SELECT 
           cd.debit_date ,
           MONTHNAME(cd.debit_date) ,
           0 ,
           ROUND(SUM(IFNULL(cd.debit_amount,0)),2)
    FROM   cust_debit cd
    WHERE YEAR(cd.debit_date) = YEAR(NOW()) 
    GROUP BY cd.debit_date, 
             MONTHNAME(cd.debit_date) 
) as TT
GROUP BY my_date,my_month

Това е цигулката



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редът на таблиците в прави съединения, без директиви за подсказки, влияе ли на производителността?

  2. НАЧАЛО...КРАЙ срещу НАЧАЛО НА ТРАНЗАКЦИЯ...АНГАЖИРАНЕ

  3. Превод на Oracle user_indexes в MySQL

  4. Преобразувайте DateTime в C# във формат yyyy-MM-dd и го съхранявайте в MySql DateTime Field

  5. Вземете генерирания uuid след вмъкване на php