2017-06-22 15 views
-3

SQL SELECTで2つの列とSUM()のすべての行を掛けようとしていますが、正しい値を取得できません。私はそれが列の負の値のためだと思う。乗算とSUM()MS SQL

image

は、だから、この-1200 * -2のようなAntalpallarに負の値が-2400でなければなりませんが、私はそれはそれをやっているとは思わない、またはありましたか?それは倉庫に出入りするものです。

とにかく、これらのtogheterを追加する最終的な価値は14320でなければなりませんが、私は2万人に1台あり、5000円ではABS()(またはwith)がありません。

誰でもこの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 
+2

-1200 * -2?いいえ、それは間違いなく-2400でなければなりません。+ 2400でなければなりません.2つの負の数を掛けると、正の数が与えられます。ここで何をしているのかを明確にすることはできますか? –

+0

質問は、2番目の列にあるものが何個あるかを示していれば、ここに負の値を持つことはどういう意味ですか?あなたはこれらのアイテムを保管していないだけでなく、その2つのサプライヤーに負担を負いますか? –

+0

私が14320の合計を得ることができる唯一の合理的な方法は、正の数を持つものを数えることであるので、条件AND(e.Antalperpall> 0)またはAND(e.Antalpallar> 0)あなたが望む番号を手に入れます。 –

答えて

0

@fiaおそらく、紙やExcelなどの他の場所で計算を行う必要があります。また、SQLで記述する前に計算の順序を把握するのに役立ちます。示された数値によれば、あなたが述べた値は正しいと思われます。すなわち、2倍の22,720倍の数値、2番目の列の絶対値を使用した場合の5,920倍です。両方の列が絶対値を使用する場合は、22,720も与えられます。 14,320を取得する必要があると確信している場合は、必要な計算を明確にしたり、その数値を修正する必要があります。 enter image description here

さらに、値が間違っている可能性があります。 2番目の列の2番目と3番目の行の値がそれぞれ-1と1の場合は、14,320を取得できます。 enter image description here

+0

14,320は倉庫の男から得たヌーベルだった。番号5920は正しい番号でなければなりません。 Thanxは、私のために数学的なことをすべてクリアしてくれています。 – fia

+0

私はこのフォーラムを初めて利用していますが、どうやって心臓を送るのですか? – fia

+0

@fia問題ありません。お力になれて、嬉しいです。回答を回答またはそれと同等のものとしてマークするだけです。この[リンク](https://stackoverflow.com/help/someone-answers)を参照してください。 –