0

我试图显示同一列的三个不同数字在 mysql 查询中并连接所有三个表,我想保持一个月的静态:April,所以会是这样的情况我想显示当前月份,上个月和我正在使用的一年中的静态月份,在这种情况下,让我们坚持 2012 年

table: persons
ID     name
 1     Carl

table: vehicle  
ID     v_name         person_veh
100   Dodge Viper       1


Table:payment
 pay_id , pay_date,    amount  person_id
    1    2012-02-12    1000        1
    2    2012-03-11    780         1
    3    2012-04-15    890         1
    4    2012-05-12    1200        1
    5    2012-06-12    1890        1
    6    2012-07-12    1350        1
    7    2012-08-12    1450        1

所以我想要做的是显示 4 月份的列金额,正如我所说的,我想让该行保持静态:890当前月份可以说当前月份是August:1450,上个月的金额是 7 月:1350:所以最终结果将是这样的:

name     v_name    april_amount   current_month_amount  previous_month_amount
Carl   Dodge viper    890                 1450                 1350
4

2 回答 2

2

您可以使用以下 - 它使用带有CASE语句的聚合函数:

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
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

SQL Fiddle with Demo

于 2012-08-28T15:14:02.390 回答
0

尝试

SELECT a.name, b.pay_date, b.amount, b.person_id, c.v_name 
FROM persons a
LEFT JOIN payment b on a.id = b.person_id 
LEFT JOIN vehicle c on a.id = c.person_veh

此查询假定 id、person_veh 和 person_id 是相似的列,这些列将这个用户链接到这三个表中

于 2012-08-28T14:52:19.653 回答