2016-03-13 2 views
0

Я пытаюсь суммировать строки, когда E1_CHECK верно между 2 датами плохо стараться изо всех сил, чтобы объяснить, вот мой стол из этого кодаMySQL Sum запросов и Вычтите

select e.e1_fecha2,a.a1_nombre,a.A1_NUMCUENTA,f.CF_KIT,e.E1_CC,e.E1_MONTo,f.CF_NUM,f.CF_MONTO 
from 
e1 as e inner join cf as f on e.CF_num=f.CF_num 
inner join a1 as a on f.a1_ID=a.a1_id 
where 
e.E1_CHECK=true and E1_FECHA2 between '2016-02-01' and '2016-02-29' 

и он показывает это

e1_fecha2 | a1_nombre | A1_NUMCUENTA | CF_KIT | E1_CC | E1_Monto | CF_NUM  |CF_Monto 
------------------------------------------------------------------------------------------- 
2016-02-29|khaldun |123456  | 55  |1/5 |1320000 |001-001-0000002|6600000 
2016-02-29|khaldun |123456  |8 cameras |1/5 |1100000 |001-001-0000003|5500000 
2016-02-29|khaldun |123456  |8 cameras |2/5 |1100000 |001-001-0000003|5500000 
2016-02-29|oiuiouio |64   | fff  |1/1 |1375000 |001-001-0000004|1375000 
2016-02-29|khaldun |123456  | 44444  |1/1 |5500000 |444-444-4422222|5500000 
2016-02-29|khaldun |123456  |rrrr  |1/1 |1125000 |001-001-0000006|1125000 

и E1_Monto является частью оплаты и CF_MONTO является общий счет того, что я хочу, чтобы вычитать CF_Monto - E1_MONTO и сколько осталось заплатить, например

это, как я хочу, чтобы это выглядело как

e1_fecha2 | a1_nombre | A1_NUMCUENTA | CF_KIT | E1_CC | E1_Monto | CF_NUM  | CF_Monto | Payed  | Left_to_Pay 
--------------------------------------------------------------------------------------------------------------------------- 
2016-02-29|khaldun |123456  | 55  |1/5 |1320000 |001-001-0000002| 6600000 |1320000 |5280000 
2016-02-29|khaldun |123456  |8 cameras |1/5 |1100000 |001-001-0000003| 5500000 |1100000 |4400000 
2016-02-29|khaldun |123456  |8 cameras |2/5 |1100000 |001-001-0000003| 5500000 |2200000 |3300000 
2016-02-29|oiuiouio |64   | fff  |1/1 |1375000 |001-001-0000004| 1375000 |1375000 |0 
2016-02-29|khaldun |123456  | 44444  |1/1 |5500000 |444-444-4422222| 5500000 |5500000 |0 
2016-02-29|khaldun |123456  |rrrr  |1/1 |1125000 |001-001-0000006| 1125000 |1125000 |0 

я попробовал другие способы, но это только показывает 1 строку и сумму всех Снегурочка.

ответ

1

Просто выберите столбцы и выполните операцию (вычитайте). Я изменил

SELECT *, E1_MONTO AS payed,CF_Monto - E1_MONTO AS left_to_pay эта линия. Надеюсь, поможет.

SELECT *, E1_MONTO AS payed,CF_Monto - E1_MONTO AS left_to_pay 
FROM e1 AS e INNER JOIN cf AS f ON e.CF_num=f.CF_num 
INNER JOIN a1 AS a ON f.a1_ID=a.a1_id 
WHERE 
e.E1_CHECK=true AND E1_FECHA2 BETWEEN '2016-02-01' AND '2016-02-29' 
+0

и оплаченный колонке? проверьте строку 2 и 3 – KhaldunT

+0

см. мой оператор select. – FallAndLearn

+0

При этом вы получите дополнительные два столбца в качестве оплаченных и left_to_pay, которые, я надеюсь, вы пожелали. – FallAndLearn

0

я понял, как это сделать это, как я сделал

select 
e.e1_fecha2,e.e1_check, a.a1_nombre,a.A1_NUMCUENTA,f.CF_KIT,e.E1_CC,e.E1_MONTo, 
(select sum(IF(t.E1_CHECK = true, t.e1_monto , 0)) from e1 as t where e.CF_NUM=t.cf_num) as payed, 
CF_Monto - (select sum(IF(t.E1_CHECK = true, t.e1_monto , 0)) from e1 as t where e.CF_NUM=t.cf_num)AS left_to_pay 
from e1 as e 
inner join cf as f on e.CF_num=f.CF_num 
inner join a1 as a on f.a1_ID=a.a1_id 
where 
e.E1_CHECK=true and E1_FECHA2 between '2016-02-01' and '2016-02-29' 

благодарит всех за помощь :)

Смежные вопросы