我需要从带有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:正是这个返回了一个奇怪的值。我想做的是获取每行中的整数值并从中获取总计。
好的,我下到地下室访问了服务器,我发现了问题。我需要像这样与Antalpallar相乘(e.Antalperpall * ABS(e.Antalpallar))。但它仍然不起作用,我认为它是负面价值观的产物。
SE 数据在这里
所以像这样的 Antalpallar 中的负值在哪里 -1200 *-2 应该是 -2400,但我认为它没有这样做,或者?它是进出仓库的东西。
无论如何,添加这些 togheter 的最终值应该是 14320,但我在 20 000 个东西上得到一个,而没有 ABS()(或)在 5000 个东西上得到一个总和。
有人知道如何写这个SUM(e.Antalperpall * ABS(e.Antalpallar))来获得我想要的值吗?
您可能想通过消除Antalperpall中是否有任何奇怪的值(字符)来尝试一下。使用 sum(cast(e.Antalperpall as Money)) 和 in filter子句 其中 ISNUMERIC( e.Antalperpall) = 1。如果字段中有任何斯坦值,则显然会得到转换错误。