mysql - 如何对 2 个查询的值求和?

标签 mysql sql

大家好,我正在尝试获得 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/

相关文章:

sql - 具有多个记录的 Rails 复杂查询设置

sql - 将 CDS/Dataverse 中的 SQL 查询结果保存到 SQL 数据库表中的最有效方法

mysql - 如果同一行中的字符串已更新,如何更新 mysql 时间戳?

自身的 MySQL 外键

sql - MySQL 中给定用户的最新行

php - 使用 MySQL 和 PHP 创建 "Secret Santa"生成器

MySQL 集群数据节点在其孪生节点出现故障时重新启动

php - 如何使用变量更新mysql数据库?

php - PHP echo 内的 anchor 标记内的图像标记

mysql,如何使 'insert on duplicate key update'存储上一个。值(value)观?