有条件地查找mysql的总和

时间:2017-09-06 07:19:04

标签: mysql sum

我有一个包含测试的表格,其中包含以下列:

  
      
  1. ID
  2.   
  3. AMT
  4.   
  5. 日期(YYYY-MM-DD)
  6.   

和值为

1  10  2017-08-09
1  20  2017-08-10
2  10  2017-09-11 

现在我需要在MONTH(date) = value1 AND YEAR(date) = value2

的情况下将特定id的所有amt求和

我尝试了以下但未获得所需的结果。

@value1 = 8
@value2 = 2017
@id = 1

SELECT SUM(CASE WHEN MONTH(date) = @value1 AND YEAR(date)= @value2        
                THEN test.amt 
                ELSE 0 END) netAmt
  FROM test 
 WHERE id = @id 

期望的结果应该是30。但是我得到0。 任何帮助都是适当的。

4 个答案:

答案 0 :(得分:0)

这可能会对你有帮助,

select sum(amt) as amt from test where month(date)=8 and year(date)='2017' and id=1;

答案 1 :(得分:0)

像这样的SQL:

select sum(amt) from test where date like '2017-08%'

答案 2 :(得分:0)

您是否尝试过以下操作?

SET @value1 = 8;
SET @value2 = 2017;
SET @id = 1;

select sum(`amt`) as total from test where `id` = @id and MONTH(`date`) = @value1 AND YEAR(`date`)= @value2;

答案 3 :(得分:0)

我正在使用MySql Workbench,并尝试一次选择三个set语句。

结果是只设置了第一组语句。单独执行它们。