首页 > 解决方案 > 将聚合函数 SUM 与列相乘?

问题描述

有没有办法将聚合函数相乘?我需要SUM(ma.gewight)为每篇文章乘以(例如,一篇文章是 H114972,它是铁,是 32,1 米)所以GROUP BY所有相同的文章和每篇不同的文章都需要乘以不同的数字(我所在的列使用乘法是e.best_wert上面提到的米)。所以基本上我需要乘以- 但它不起作用SUM(ma.gewicht)e.best_wert

PS。Gewicht = 重量
PSS。e.best_wert = 重量值/米

SELECT m.artikel, COUNT(ei.bestell_po) bestell_po_menge, SUM(ma.gewicht) AS summe_gewicht--, SUM(e.best_wert*ma.gewicht) AS summe_kg
FROM MATV030 m
INNER JOIN EINV030 e ON e.BESTELL_NR = m.BESTELL_NR
INNER JOIN EINV035 ei ON e.bestell_nr = ei.bestell_nr 
INNER JOIN MATV010 ma ON m.ARTIKEL = ma.ARTIKEL 
WHERE e.lieferant = '6000176' AND m.menge_buch <> 0 
--AND m.artikel = 'H114972'
AND m.bs = 'WE' AND m.budatum >= '20190101' AND m.budatum < '20190201' 
GROUP BY m.artikel, ma.gewicht
ORDER BY m.artikel ASC

标签: sqlsql-server

解决方案


尝试这个,

;With CTE as
(
SELECT ma.ARTIKEL,  SUM(ma.gewicht) AS summe_gewicht--, SUM(e.best_wert*ma.gewicht) AS summe_kg
FROM MATV030 m
INNER JOIN MATV010 ma ON m.ARTIKEL = ma.ARTIKEL 
WHERE m.menge_buch > 0 
--AND m.artikel = 'H114972'
AND m.bs = 'WE' AND m.budatum >= '20190101' AND m.budatum < '20190201' 
GROUP BY m.ARTIKEL
--ORDER BY m.artikel ASC
)

SELECT m.artikel, COUNT(ei.bestell_po) bestell_po_menge,summe_gewicht, summe_gewicht*e.best_wert AS summe_kg
FROM CTE C
inner join MATV030 m on m.artikel=c.artikel
INNER JOIN EINV030 e ON e.BESTELL_NR = m.BESTELL_NR
INNER JOIN EINV035 ei ON e.bestell_nr = ei.bestell_nr 
WHERE e.lieferant = '6000176' 
GROUP BY m.artikel
ORDER BY m.artikel ASC

推荐阅读