无法弄清楚如何在mysql中处理值的总和

时间:2018-04-10 10:35:36

标签: mysql sql sum

早上好,

我正在尝试从我的传入和传出产品创建一个mysql输出。这有效,但我无法获得同一行中所有产品的值。希望有人可以帮助我。 (在orderinhoud-deellevering.aantal列中,有很多次NULL值。)

这是我的代码:

SELECT
  orderinhoud.Artnr,
  orderinhoud.Description,
  If(voorraadmutatie.waarde = 1, Sum(voorraadmutatie.waarde * (orderinhoud.Amount -  Coalesce((`orderinhoud-deellevering`.aantal), 0))), 0) AS INKOMEND,
  If(voorraadmutatie.waarde <> 1, Sum(voorraadmutatie.waarde * (orderinhoud.Amount -  Coalesce((`orderinhoud-deellevering`.aantal), 0))), 0) AS UITGAAND
FROM
  orderinhoud
  RIGHT OUTER JOIN `order` ON `order`.id = orderinhoud.orderid
  LEFT OUTER JOIN voorraadmutatie ON `order`.voorraadmutatie = voorraadmutatie.Id
  LEFT OUTER JOIN `orderinhoud-deellevering` ON orderinhoud.orderinhoudid = `orderinhoud-deellevering`.orderinhoudid
WHERE
`order`.leverancierid = 22
GROUP BY
  orderinhoud.Artnr,
  orderinhoud.Description,
  `order`.deliverydatetotal,
  `order`.leverancierid,
  `order`.commissiecompleet,
  `order`.voorraadmutatie    

---我得到的输出如下---

Artnr   Description INKOMEND    UITGAAND
K30000  ROUND  ALARM    2400    0
K30000  ROUND  ALARM    0      -788
K30001  SQUARE ALARM    1900    0
K30001  SQUARE ALARM    0      -1020

但我想要的输出是:

Artnr   Description INKOMEND    UITGAAND
K30000  ROUND  ALARM    2400    -788
K30001  SQUARE ALARM    1900    -1020

我希望有人能帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

Select q1.Artnr,q1.Description,sum(INKOMEND),sum(UITGAAND)
from
(
SELECT
  orderinhoud.Artnr,
  orderinhoud.Description,
  If(voorraadmutatie.waarde = 1, 
Sum(voorraadmutatie.waarde * (orderinhoud.Amount -  Coalesce((`orderinhoud-deellevering`.aantal), 0))), 0) AS INKOMEND,

  If(voorraadmutatie.waarde <> 1, Sum(voorraadmutatie.waarde * (orderinhoud.Amount -  Coalesce((`orderinhoud-deellevering`.aantal), 0))), 0) AS UITGAAND

FROM
  orderinhoud
  RIGHT OUTER JOIN `order` ON `order`.id = orderinhoud.orderid
  LEFT OUTER JOIN voorraadmutatie ON `order`.voorraadmutatie = voorraadmutatie.Id
  LEFT OUTER JOIN `orderinhoud-deellevering` ON orderinhoud.orderinhoudid = `orderinhoud-deellevering`.orderinhoudid
WHERE
`order`.leverancierid = 22
GROUP BY
  orderinhoud.Artnr,
  orderinhoud.Description,
  `order`.deliverydatetotal,
  `order`.leverancierid,
  `order`.commissiecompleet,
  `order`.voorraadmutatie    
) q1 group by q1.Artnr,q1.Description