我试图做一个SQL调用,避免小计$ 0的订单。我无法让它忽略小计0.00的订单。SQL不等于0.00十进制值
我的SQL调用:
SELECT Orders_Products.productID,
Orders_Products.QtyOrdered,
Orders.DateCreated,
Orders_Products.Subtotal,
SUM(Orders_Products.Subtotal) as Revenue
FROM `Orders_Products`
INNER JOIN Orders
ON Orders_Products.OrderID = Orders.OrderID
WHERE ProductID <= 21
AND ProductID >= 19
OR ProductID = 41
AND Orders_Products.Subtotal <> 0.00
AND MONTH(Orders.DateCreated) = MONTH(CURDATE())
AND Year(Orders.DateCreated) = YEAR(CURDATE())
GROUP BY DateCreated
ORDER BY `Orders`.`DateCreated` DESC
这是我遇到的问题(仍显示订单小计0.00):
AND Orders_Products.Subtotal <> 0.00
我也试过
AND Orders_Products.Subtotal != 0.00
AND Orders_Products.Subtotal <> 0
AND Orders_Products.Subtotal <> "0.00"
但是,我的产出仍包含小计0.00的订单项:
什么是Orders_Products.Subtotal列的类型? – Anton 2014-09-29 18:06:42
它是十进制的(12,2) – CaitlinHavener 2014-09-29 18:08:55
2件事 - 有一个条款用于聚合的where子句。第二个 - 这个查询在任何数据库上都会失败,但是MySQL ...你需要按select子句中所有不属于聚合的列进行分组。 MySQL喜欢做错误的事情...可能性是这个查询没有做你认为的事情。 – Twelfth 2014-09-29 18:26:41