1

私は2つのテーブルを照会しています:

  1. tblPurhcaseOrders- さまざまな列で注文書を保持します。そのうちの 1 つは外部キーと呼ばれますOrderTypeID
  2. 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、うまくいきませんでした。

4

1 に答える 1

2

変化する

WHERE       
   MONTH(DeliveryDate) = 1  
   AND YEAR(DeliveryDate) = 2012

の中へ

AND
   MONTH(DeliveryDate) = 1  
   AND YEAR(DeliveryDate) = 2012
于 2013-11-07T12:09:17.093 に答える