我试图找到两个日期之间的值的总和,在这种情况下,我总是希望保持一个日期不变。示例查找日期 4 月到 7 月之间的值,保持 4 月不变,因此另一种情况可能是日期 4 月到 5 月之间的值的总和,再次保持 4 月不变。我一直在处理几个查询很长一段时间但没有成功这样做你能看看下面的SQLFiddle并帮助我吗我真的很感激帮助
问问题
4298 次
1 回答
5
为什么不添加另一个CASE
语句:
sum(case when pay_date between '2012-04-01' and '2012-06-01'
then amount end) range_amount
所以你的查询是:
SELECT p.name,
v.v_name,
SUM(CASE
WHEN MONTH(py.pay_date) = 4 THEN amount
end) april_amount,
SUM(CASE
WHEN MONTH(py.pay_date) = MONTH(CURDATE()) THEN amount
end) current_month_amount,
SUM(CASE
WHEN MONTH(py.pay_date) = MONTH(CURDATE()) - 1 THEN amount
end) previous_month_amount,
SUM(CASE
WHEN pay_date BETWEEN '2012-04-01' AND '2012-06-01' THEN amount
end) range_amount
FROM persons p
LEFT JOIN vehicle v
ON p.id = v.person_veh
LEFT JOIN payment py
ON p.id = py.person_id
GROUP BY p.name,
v.v_name
然后,如果要更改日期范围,可以传入结束日期的值并将其设为变量。
于 2012-08-30T02:56:58.880 回答