我试图做乘法两列SUM()在SQL SELECT中的所有行,但我不能得到正确的值。我认为这是由于列中的负值。乘法和SUM()MS SQL
所以是它是负值在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
-1200 * -2?不,这绝对不应该是-2400,它应该是+2400,乘以两个负数会给你一个正数。你能澄清你在这里做什么吗? –
问题是,如果第二列表示您有多少东西,那么这意味着在这里有一个负数?你不仅没有储存这些物品,你欠他们两个的供应商? –
唯一合理的办法可以得到的14320的总和仅是通过计数的那些与一个正数,因此添加条件'AND(e.Antalperpall> 0)'或'AND(e.Antalpallar> 0)',或两者,会得到你想要的号码。 –