我有一个包含测试的表格,其中包含以下列:
- ID
- AMT
- 日期(YYYY-MM-DD)
醇>
和值为
1 10 2017-08-09
1 20 2017-08-10
2 10 2017-09-11
现在我需要在MONTH(date) = value1 AND YEAR(date) = value2
。
我尝试了以下但未获得所需的结果。
@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。 任何帮助都是适当的。
答案 0 :(得分:0)
这可能会对你有帮助,
select sum(amt) as amt from test where month(date)=8 and year(date)='2017' and id=1;
答案 1 :(得分:0)
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语句。
结果是只设置了第一组语句。单独执行它们。