-1
我有2个表:的Sql SUM当值时=是
Order
作为主表中的列订单ID,金额,日期,客户,金额OrderDetails
与子表列Id,OrderID,项目,状态布尔(是或否),价格,数量,小计。
我想总结小计仅如果状态是YES,那么显示的总和在主“金额”栏
SELECT
Order.OrderId, Order.Date, Order.Customer, Order.Amount,
SUM(OrderDetails.SubTotal) AS TotalAmount,
FROM
Order
INNER JOIN
OrderDetails ON Order.OrderId = OrderDetails.OrderId
WHERE
(OrderId.status = Yes)
GROUP BY
Order.OrderId, Order.Date, Order.Customer, Order.Amount
这个SQL语句只返回行,其中列Status
是“是的“,但我想返回所有这些,但SUM
只有Status = Yes
的行。
例子:
OrderDetails
表
Order-Id item Price Quantity SubTotal Status
-------------------------------------------------------
M1 Shirt 10 10 100 yes
M1 item2 5 5 25 no
M2 Item3 7 5 35 yes
Order
:
order-Id date Cus Amount
------------------------------------------------
M1 2016/8/20 Jean-Claude 100
M2 2016/8/20 Pierre 35
谢谢
注 - 如果您使用的是SQL 2012或更高版本,则可以使用'iif'函数代替'case'语句 – iliketocode
@iliketocode。 。 。绝对没有理由使用'iif()'。这是为了与MS Access的后向兼容而添加的不必要的功能。 CASE是ANSI标准,几乎可以在所有数据库中使用。 –