【问题标题】:I want to get each month expense from three table我想从三个表中获取每个月的费用
【发布时间】:2016-11-13 13:48:30
【问题描述】:

我有三个名为"salary""allowance""bill" 的表。

"salary" 表有

 s_id [primary key], E_ID, S_Amount, S_Date.

"allowanace" 表有

 A_ID[primary key], E_ID, A_TA, A_DA, A_MA, A_Others, A_Date, Total_A

"bill" 表有

 E_ID[primary key], Electric, Gas, Water, B_Others, B_Date Total_B 

我已经用这个查询加入了这些表>>

 SELECT 
     SUM(allowance.`A_TA`+allowance.`A_DA`
     +allowance.`A_MA`+allowance.`A_Others`)
     AS Total_Allowance, 
     (SUM(salary.`S_Amount`)) AS Total_Salary, 
      SUM(bill.`Electric`+bill.`Water`+bill.`Gas`+bill.`B_Others`) as 
      Total_Bill,
     (SUM(allowance.`A_TA`+allowance.`A_DA`+allowance.`A_MA`
      +allowance.`A_Others`)+SUM(salary.`S_Amount`)
      +SUM(bill.`Electric`+bill.`Water`+bill.`Gas`+bill.`B_Others`))
      AS Total_Ex 
      from salary
      INNER JOIN allowance
      ON salary.E_ID=allowance.E_ID 
      INNER JOIN bill
      ON salary.S_Date=bill.B_Date

我想分别获取 2015 年 1 月、2015 年 12 月、2016 年 10 月、2016 年 11 月的总费用“Total_Ex”……每个月的总费用。

【问题讨论】:

  • 我用过 >>>> WHERE YEAR(A_Date)= $op1 AND YEAR(S_Date)= $op1 AND YEAR(B_Date)= $op1 AND MONTH(A_Date)=1 AND MONTH(S_Date) =1 AND MONTH(B_Date)=1 GROUP BY YEAR(A_Date)=$op1,YEAR(S_Date)=$op1,YEAR(B_Date)=$op1, MONTH(A_Date=1),MONTH(S_Date=1), MONTH (B_Date=1);")
  • 编辑您的问题不要在评论部分添加更多信息。有关如何在 stackoverflow 中提问的一些信息:stackoverflow.com/help/how-to-ask

标签: php mysql sql-server mysqli


【解决方案1】:

尝试使用 SUM 和 IF:

SUM(IF(DATE_FORMAT(salary.S_Date,'%M')='January',
allowance.A_TA+allowance.A_DA+allowance.A_MA
+allowance.A_Others
+salary.S_Amount+bill.Electric+bill.Water
+bill.Gas+bill.B_Others,0)) AS 
Jan_Total_Ex

这将为您提供一月份的总费用。

【讨论】:

  • 谢谢。如何选择年份?如果我想选择 2015 年 1 月,会查询什么?
  • DATE_FORMAT(salary.S_date,'%M %Y'). 您可以查看here 以进一步定制。
【解决方案2】:

这行得通吗? SELECT convert(varchar(8), bill.B_Date,120) +'01', SUM(allowance.A_TA+allowance.A_DA+allowance.A_MA+allowance.A_Others) AS Total_Allowance, (SUM(salary.S_Amount)) 作为 Total_Salary,SUM(bill.Electric+bill.Water+bill.Gas+bill.B_Others) 作为 Total_Bill, (SUM(allowance.A_TA+allowance.A_DA+allowance.A_MA+allowance.A_Others)+SUM(salary.S_Amount)+SUM(bill.Electric+bill.Water+bill.Gas+bill.B_Others)) AS Total_Ex 从工资 INNER JOIN 津贴 ON 工资.E_ID=津贴.E_ID INNER JOIN 法案 ON 工资.S_Date=bill.B_Date 按转换分组(varchar(8),bill.B_Date,120)+'01'

【讨论】:

  • 能否请您稍微描述一下。我对此很陌生。一些描述会很有帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
相关资源
最近更新 更多