2017-06-22 24 views
-3

Ich versuche, zwei Spalten und SUM() alle Zeilen in einem SQL SELECT zu multiplizieren, aber ich kann nicht den richtigen Wert erhalten. Ich denke, es liegt an den negativen Werten in den Spalten.multiplizieren und SUM() MS SQL

image

So waren es negativer Wert in Antalpallar wie dies -1200 * -2 -2400 sein soll, aber ich glaube nicht, dass das tut, oder? Es ist ein und aus einem Lagerhaus.

Jedenfalls sollte der Endwert des Hinzufügens dieser Togheter 14320 sein, aber ich bekomme einen auf 20 000 etwas und ohne ABS() (oder mit) eine Summe auf 5000 etwas.

Wer weiß, wie man diese SUMME schreibt (e.Antalperpall * ABS (e.Antalpallar)), um den Wert zu erhalten, den ich will? Offensichtlich gibt es etwas, das ich vermisst habe.

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 
+2

-1200 * -2? Nein, das sollte definitiv nicht -2400 sein, es sollte +2400 sein, das Multiplizieren von zwei negativen Zahlen gibt dir eine positive Zahl. Kannst du erklären, was du hier machst? –

+0

Die Frage ist, ob die zweite Spalte angibt, wie viele von etwas Sie haben, was bedeutet es sogar, hier eine negative Menge zu haben? Haben Sie diese Gegenstände nicht nur im Lager, Sie schulden dem Lieferanten zwei? –

+0

Der einzige vernünftige Weg, eine Summe von 14320 zu bekommen, besteht darin, nur diejenigen mit einer positiven Zahl zu zählen, also die Bedingung 'AND (e.Antalperpall> 0)' oder 'AND (e.Antalpallar> 0)' oder beides hinzuzufügen , erhalten Sie die gewünschte Nummer. –

Antwort

0

@fia Vielleicht sollten Sie Ihre Berechnung tun anderswo zuerst zum Beispiel auf Papier oder in Excel Sie, um sicherzustellen, genau wissen, was sollten Sie erhalten. Es würde Ihnen auch helfen, die Reihenfolge der Berechnung herauszufinden, bevor Sie es in SQL schreiben. Gemäß den gezeigten Zahlen scheinen die von Ihnen angegebenen Werte korrekt zu sein, d. H. 22.720 für Multiplizieren, dann summieren Sie die Zahlen so wie sie sind, oder 5.920, wenn Sie den Absolutwert der zweiten Spalte verwenden. Wenn beide Spalten absolute Werte verwenden, ergibt dies ebenfalls 22.720. Wenn Sie sicher sind, dass Sie 14.320 benötigen, müssen Sie möglicherweise eine Klärung der benötigten Berechnung einholen oder diese Zahl überarbeiten. enter image description here

Außerdem können Ihre Werte falsch sein. Sie erhalten 14, 320, wenn die Werte für die zweite und dritte Zeile in der zweiten Spalte -1 bzw. 1 sind. enter image description here

+0

14.320 war die Nuber, die ich aus dem Lager-Typ bekam. Die Nummer 5920 muss die richtige sein. Danke Richard, dass er mir die ganze Mathe-Sache klar gemacht hat. – fia

+0

Ich bin neu in diesem Forum, wie schicke ich ein Herz oder etwas? – fia

+0

@fia Kein Problem. Freue mich zu helfen. Markieren Sie einfach die Antwort als Antwort oder ähnlich. Siehe [link] (https://stackoverflow.com/help/someone-answers) –