我正在使用 MS SQL。我有两张桌子:
1) “OrderProducts” - 此表存储订单中的所有产品。还有另一个 Orders 主表,我们可以从这张图中省略。Orders 主表存储订单的主要数据,而 OrderProducts 表存储详细信息。
2) “TransactionFeeProducts” - 此表存储我要为订单收取的所有产品的交易费用。它有一个 BatchID,其中多个产品可以有相同的 BatchID。
基本上,所有 OrderDate 介于 TransactionFeeProducts.FromDate 和 TransactionFeeProducts.ToDate 之间的订购产品,都将收取 TransactionFeeProducts.TransactionFee
订购产品
- 产品编号
- 数量
- 订购日期
交易费用产品
- 批号
- 产品编号
- 从日期
- 迄今为止
- 手续费
SQL:
SELECT SUM(Quantity) as Orders,
TransactionFeeProducts.ProductID, FromDate, ToDate
FROM TransactionFeeProducts
LEFT JOIN OrderProducts ON TransactionFeeProducts.ProductID = OrderProducts.ProductID
WHERE
OrderDate >= TransactionFeeProducts.FromDate AND
OrderDate <= TransactionFeeProducts.ToDate AND
TransactionFeeProducts.BatchID = 3
GROUP BY TransactionFeeProducts.ProductID, FromDate, ToDate
ORDER BY SUM(Quantity) DESC
我希望 SQL 返回 TransactionFeeProducts 中 BatchID = 3 的所有记录。 SUM(Quantity) 应该只给我在 TransactionFeeProducts.FromDate 和 TransactionFeeProducts.ToDate 之间进行 OrderDate 的总和
如果 SUM(Quantity) 为 0,则该字段应为 NULL 或 0。
我现在的问题是,如果 SUM(Quantity) 为 0,SQL 不会返回任何记录。
请帮忙。非常感谢你。