Умножить агрегатную функцию SUM на столбец? - PullRequest
0 голосов
/ 04 октября 2019

Есть ли способ умножить агрегатную функцию? Мне нужно умножить 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

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Попробуйте,

;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
0 голосов
/ 04 октября 2019

Вы можете создать таблицу CTE (Common Table Expression) с вашими совокупными значениями, а затем умножить обе таблицы, используя CTE.

0 голосов
/ 04 октября 2019

Попробуйте вот так

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...