我有疑问:
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和1.所以如果找到0,我将它设为-1000,以识别{0}为0 {0}或为idorder
但它没有给出适当的总和,它应该为每列提供-ve的结果。
答案 0 :(得分:1)
where
子句中的此表达式:
AND ama.FreeShiping != 0
仅选择“1”的值。如果要查看其他值,请将其删除。
您还应该学会使用正确的join
语法。如果您使用了join
关键字,那么大部分条件都会出现在on
条款中,并且此where
条件可能更容易被发现。