Sql 将聚合函数和乘以一列?

Sql 将聚合函数和乘以一列?,sql,sql-server,Sql,Sql Server,有没有办法将聚合函数相乘?我需要乘以SUMma.gewight,对于每一篇文章,一篇文章是,例如,H114972,它是铁的,是32,1米,所以分组所有相同的文章,对于每一篇不同的文章,我需要乘以一个不同的数字,我用来乘以的列是e.best_wert,这是上面提到的米。所以基本上我需要把SUMma.gewicht和e.best_wert相乘,但它不起作用 PS.Gewicht=重量 PSS。e、 最佳值=重量值/米 SELECT m.artikel, COUNT(ei.bestell_po) be

有没有办法将聚合函数相乘?我需要乘以SUMma.gewight,对于每一篇文章,一篇文章是,例如,H114972,它是铁的,是32,1米,所以分组所有相同的文章,对于每一篇不同的文章,我需要乘以一个不同的数字,我用来乘以的列是e.best_wert,这是上面提到的米。所以基本上我需要把SUMma.gewicht和e.best_wert相乘,但它不起作用

PS.Gewicht=重量 PSS。e、 最佳值=重量值/米

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
像这样试试

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
试试这个

;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

您可以使用聚合值创建一个CTE公共表表达式表,然后使用CTE将两个表相乘。

可能是将ma.gewicht*SUMe.best\u wert作为summe\u kg?等等,而是通过将ma.gewicht从组中删除。通常,除了作为设置函数参数的列之外,您可以按所选的相同列进行分组。从分组中删除Gewich。示例数据会有所帮助。不,它没有按预期工作-它会打断GROUP BY子句。但我很感谢你的帮助。你进行过这个查询吗?如果是,请给我发错误是的,没有错误信息,但是乘以的结果是错误的-它们没有意义这个查询是正确的。错误结果的原因可能是你错误地理解所有文章都有相同的最佳效果。你要么要确保所有文章都有相同的最佳答案,要么决定一个我最注意的聚合函数;可能是最小值还是最大值?您能否提供一个如何实施CTE的示例?这将大大增加你的答案!