mysql - 在一张表中按月份获取多个值的总和

标签 mysql sql tsql

我有一个带有查询的表:

   SELECT DATENAME(Month,TOPUP.tu_timestamp) AS MonthName, TM.terminal_name, 
   CAST(ROUND(ISNULL(TOPUP.tu_credit - NC.initial_bal, TOPUP.tu_credit) / 
   TOPUP.currency_rate, 2) AS decimal(18, 2)) AS 
   Top_Up_Value                       
   FROM dbfastshosted.dbo.fh_mf_top_up_logs AS TOPUP 
   INNER JOIN   dbo.cdf_terminal_user AS TU ON TOPUP.terminal_user_id = 
   TU.terminal_user_id 
   INNER JOIN   dbo.cdf_currency AS CR ON TOPUP.currency_id = CR.currency_id 
   INNER JOIN   dbo.cdf_cuid AS CU ON TOPUP.cu_id = CU.cu_id 
   INNER JOIN   dbo.cdf_card_role AS CO ON CO.id = CU.card_role_id             
   INNER JOIN   dbo.cdf_terminal_user_account AS UA ON UA.terminal_user_id = 
   TU.terminal_user_id 
   INNER JOIN   dbo.cdf_terminal AS TM ON TM.terminal_id = UA.terminal_id 
   INNER JOIN   dbfastshosted.dbo.fh_sales_map AS MA ON MA.tu_log_id = 
   TOPUP.tu_log_id 
   LEFT OUTER JOIN  dbfastshosted.dbo.fh_mf_new_card_logs AS NC ON 
   MA.nc_log_id = NC.nc_log_id
   WHERE (ISNULL(TOPUP.tu_credit - NC.initial_bal, TOPUP.tu_credit) > 0)
   and YEAR(TOPUP.tu_timestamp) = '2017'
   AND month(TOPUP.tu_timestamp) = 1
   AND TM.terminal_id = 7
   GROUP BY TOPUP.tu_log_id,DATENAME(Month,TOPUP.tu_timestamp), 
   TM.terminal_name, 
   TOPUP.tu_credit, NC.initial_bal, TOPUP.currency_rate, CU.card_type_id;

   MonthName          Terminal name         Top Up Value
  ------------------------------------------------------
    January            Terminal 1               100
    January            Terminal 1               200     
    January            Terminal 3               150
     Feb               Terminal 1               250
     Feb               Terminal 1               160
     March             Terminal 2               120
     March             Terminal 3               100

我想根据月份获得充值总额,如下所示:

    MonthName       Top Up Value
  -----------------------------------
    January            450              
    February           410
    March              220
    -----
    Dec

由于我是 sql 初学者,我不知道该怎么做。确实需要这些方面的帮助。谢谢!

最佳答案

 SELECT DATENAME(Month,TOPUP.tu_timestamp) AS MonthName,  
  SUM(CAST(ROUND(ISNULL(TOPUP.tu_credit - NC.initial_bal, TOPUP.tu_credit) / 
  TOPUP.currency_rate, 2) AS decimal(18, 2))) AS 
  Top_Up_Value                       
  FROM dbfastshosted.dbo.fh_mf_top_up_logs AS TOPUP 
 INNER JOIN   dbo.cdf_terminal_user AS TU ON TOPUP.terminal_user_id = 
  TU.terminal_user_id 

关于mysql - 在一张表中按月份获取多个值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046773/

相关文章:

php - 使用 PHP PDO 更新复选框的数据库值

sql - rails union hack,如何将两个不同的查询放在一起

java - sql-maven-plugin:清理多个数据库?

sql - SSRS 报告 - IIF 声明问题

html - SQL - 删除字符串中的所有 HTML 标记

sql-server - 级联删除性能 : Whats the fastest way to delete a row its 1-Many rows?

xml - "incorrect syntax near modify"更新列值的 xml 类型时

mysql - 如何在 WordPress 上设置网站更新(开发 -> 登台 -> 生产)?

mysql - Solr - 匹配逗号分隔的 ID

mysql - sql计数函数