私は2つのテーブルを照会しています:
tblPurhcaseOrders
- さまざまな列で注文書を保持します。そのうちの 1 つは外部キーと呼ばれますOrderTypeID
tblOrderTypes
- 4種類の注文書を保持
の注文タイプの 1 つは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
れます。
私は完全結合を試みましたが、2 つのテーブルの順序を切り替えようとしましたがLEFT OUTER JOIN
、うまくいきませんでした。