将聚合函数SUM乘以列?

时间:2019-10-04 09:30:52

标签: sql sql-server

有没有办法乘一个聚合函数?我需要对每篇文章乘以SUM(ma.gewight)(例如,一篇文章是H114972,它是铁,高度为32.1米),所以GROUP BY将所有相同的文章以及我需要对每一个不同的文章进行分组将一个不同的数字相乘(我用来相乘的列是e.best_wert,即上面提到的米)。因此,基本上我需要将SUM(ma.gewicht)e.best_wert相乘-但这是行不通的。

PS。盖威奇=体重
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

3 个答案:

答案 0 :(得分:0)

尝试这样

SELECT m.artikel, COUNT(ei.bestell_po) bestell_po_menge, SUM(ma.gewicht) AS summe_gewicht, (e.best_wert * SUM(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, e.best_wert
ORDER BY m.artikel ASC

答案 1 :(得分:0)

尝试一下

;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

答案 2 :(得分:0)

您可以使用汇总值创建一个CTE(公用表表达式)表,然后使用CTE将这两个表相乘。