我正在查询两个表:
tblPurhcaseOrders
- 保存具有各种列的采购订单,其中一个是称为外键的OrderTypeID
tblOrderTypes
- 持有4种采购订单
其中一种订单类型的tblOrderTypes
添加晚于前 3 种基本类型。因此,具有这种较新订单类型的采购订单实例仅在某个时间点(2012 年 2 月)出现。
我正在编写一个聚合查询,它最终应该给我带来所有采购订单的总和,按它们的类型分组。
我确实希望结果为 0 或 NULL,即使我查询新订单类型尚不存在的时间点。
这是我的查询的样子:
SELECT
MONTH(tblPurchaseOrders.DeliveryDate) AS sMonth,
YEAR(tblPurchaseOrders.DeliveryDate) AS sYear,
tblOrderType.OrderTypeName,
SUM(ISNULL(TotalPrice,0)) AS sValue
FROM
tblPurchaseOrders
RIGHT OUTER JOIN
tblOrderTypes ON tblPurchaseOrders.OrderTypeID = tblOrderTypes.OrderTypeID
WHERE
MONTH(DeliveryDate) = 1
AND YEAR(DeliveryDate) = 2012
GROUP BY
MONTH(DeliveryDate), YEAR(DeliveryDate), tblOrderType.OrderTypeName
现在,上面的查询工作得很好,并为我提供了正确的聚合,只是它忽略了较新的订单类型(提醒,它在 2012 年 1 月还不存在)。
如果我将查询条件更改为MONTH(DeliveryDate) = 2 AND YEAR(DeliveryDate) = 2012
它会出现。
我已经尝试过完全加入,还尝试在两个表的顺序之间切换并切换到LEFT OUTER JOIN
,没有运气。