大家好,我正在尝试获得 2 个查询的最终总和。
我有 2013 年的欧元金额。
这是我的查询 http://sqlfiddle.com/#!2/a2638/14 .
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
4900 4900 6400 6400 6400 6400 6400 6400 2400 2400 2400 2400
我有 2013 年的美元兑欧元金额。
这是我的查询 http://sqlfiddle.com/#!2/a2638/15 .
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
15386 15386 20096 20096 20096 20096 20096 20096 7536 7536 7536 7536
我正在尝试获得最终的美元金额,如下所示:
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
20286 20286 26496 26496 26496 26496 26496 26496 9936 9936 9936 9936
这是解释一切的查询 http://sqlfiddle.com/#!2/a2638/12
请问有人可以帮助我吗?
我非常感谢帮助
最佳答案
尝试运行这个:
SELECT
SUM(if (CONCAT(@year, '-01') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Jan,
SUM(if (CONCAT(@year, '-02') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Feb,
SUM(if (CONCAT(@year, '-03') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Mar,
SUM(if (CONCAT(@year, '-04') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Apr,
SUM(if (CONCAT(@year, '-05') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) May,
SUM(if (CONCAT(@year, '-06') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Jun,
SUM(if (CONCAT(@year, '-07') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Jul,
SUM(if (CONCAT(@year, '-08') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Aug,
SUM(if (CONCAT(@year, '-09') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Sep,
SUM(if (CONCAT(@year, '-10') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Oct,
SUM(if (CONCAT(@year, '-11') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) Nov,
SUM(if (CONCAT(@year, '-12') BETWEEN date_format(date_ini, '%Y-%m') AND date_format(date_expired, '%Y-%m'),i.net_insurance * IF (type_money = 2, @euro, 1), 0)) `Dec`
FROM insurances i
INNER JOIN policies p ON p.id = i.policy_id
WHERE (i.initial_date >= p.date_ini
AND i.final_date <= p.date_expired)
;
如果您有更多货币,最好引入“货币表”并将其添加到加入中。看http://sqlfiddle.com/#!2/46cba/2
关于mysql - 如何对 2 个查询的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664080/