0
我有查询:聚合函数不给总和
SELECT o.idorder,
sum(CASE
WHEN cast(isnull(ama.FreeShiping, 0) AS INT) = 0
THEN - 1000
ELSE cast(isnull(ama.FreeShiping, 0) AS INT)
END) FreeShiping
FROM OrderDetail od,
amazonsku ama,
orders o,
TempPrintRecords tmp
WHERE o.idOrder = od.idOrder
AND o.idCustomer = ama.idCustomer
AND od.SKU = ama.Sku
--and od.idOrder=350184
AND od.idOrder = tmp.idOrder
AND ama.FreeShiping != 0
GROUP BY o.idorder
结果:
在这里,我在ama.FreeShiping
有0和空基本上这列位,只包含0和1.因此,如果发现0,我将它设为-1000以确定idorder
具有0或空作为Freeshipping
但它没有给出适当的总和,它应该给每列的-ve结果。
如果你删除了SUM()和GROUP BY,我怀疑你会发现'idorder' 350184和350185的多行,这两行的'ama.FreeShipping'都是'1'。你总结了这些多行,并在这里以'2'结尾。 – JNevill 2015-04-01 15:04:25
也许我错过了一些东西,但是如果ama.freeshipping!= 0意味着没有零,所以case语句是毫无价值的,因为你永远不会有零。 – xQbert 2015-04-01 15:05:10