2017-06-13 117 views
-1

我需要從SQL列中獲取總數,但它不工作,任何人都可以看到我做錯了什麼。選擇SUM()SQL

SELECT a.Artikelnummer 
    ,a.Artikelnamn 
    ,a.Antalperpall 
    ,COUNT(*) AS AntalArtiklar 
    ,SUM(e.Antalpallar) AS TotalPall 
    ,SUM(e.Antalperpall) 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 

SUM(e.Antalperpall)AS TotalStyck:這是誰返回一個奇怪的值。我想要做的是取每行的整數值並從中得到總數。

好吧,我去了地下室,並訪問了服務器,我發現這個問題。我需要像這樣SUM(e.Antalperpall * ABS(e.Antalpallar))與Antalpallar相乘。但它仍然不起作用,我認爲這是負面價值的原因。

se data here

所以它是這樣的Antalpallar是負面的價值-1200 * -2應該是-2400,但我不認爲它這樣做,還是?它是進出倉庫的東西。

無論如何,增加那些togheter的最終值應該是14320,但我得到一個20 000的東西,沒有ABS()(或與)5000的東西總和。

任何人都知道如何寫這個SUM(e.Antalperpall * ABS(e.Antalpallar))來獲得我想要的值?

+1

Antalpallar和Antalperpall的數據類型是什麼? – apomene

+0

這不工作意味着你得到什麼?你能更好地解釋什麼是「奇怪的」價值嗎?嘗試將字段強制轉換爲int – MiloBellano

+1

您能告訴我們一些示例數據,從樣本數據總結中返回什麼以及您期望的是什麼,這樣我們可以計算出 – MarkD

回答

0

您可能想要通過消除Antalperpall中是否有任何奇怪的值(字符)來嘗試它。使用sum(cast(e.Antalperpall作爲貨幣))和條款 其中ISNUMERIC(e.Antalperpall)= 1。如果在該字段中有任何stange值,您將顯然會得到轉換錯誤。