乘以和SUM()MS SQL

时间:2017-06-22 07:49:35

标签: sql sql-server sum

我正在尝试在SQL SELECT中将两列和SUM()的所有行相乘,但我无法获得正确的值。我认为这是因为列中的负值。

image

Antalpallar的负值如此-1200 * -2应该是-2400但是我不认为这样做,或者?它是进出仓库的东西。

无论如何,添加那些togheter的最终值应该是14320,但是我得到一个20 000的东西而没有ABS()(或者)一个5000的总和。

任何人都知道如何写这个SUM(e.Antalperpall * ABS(e.Antalpallar))来获得我想要的价值?显然有一些我错过的东西。

SELECT a.Artikelnummer
    ,a.Artikelnamn
    ,a.Antalperpall
    ,COUNT(*) AS AntalArtiklar
    ,SUM(e.Antalpallar) AS TotalPall
    ,SUM(e.Antalperpall * ABS(e.Antalpallar)) AS TotalStyck
FROM Artikel AS a
INNER JOIN Evig AS e ON a.ArtikelnummerID = e.ArtikelnummerID
WHERE (e.Datum <= '{0}')
    AND (a.Kundkund = '{1}')
    AND (a.Artikelnamn = '{2}')
GROUP BY a.Artikelnummer
    ,a.Artikelnamn
    ,a.Antalperpall

1 个答案:

答案 0 :(得分:0)

@fia也许您应该先在其他地方进行计算,例如在纸上或Excel中,以确保您确切知道应该得到什么。它还可以帮助您在SQL中编写计算之前计算出计算顺序。根据显示的数字,您所说的数值似乎是正确的,即乘以22,720然后将数字相加,如果使用第二列的绝对值则为5,920。如果两列都使用绝对值,那么它也会给出22,720。如果您确定需要获得14,320,那么您可能需要澄清所需的计算或修改该数字。 enter image description here

此外,您的价值观可能有误。如果第二列中第2行和第3行的值分别为-1和1,则可以得到14,320。enter image description here