0

購入とアイテムの 2 つのテーブルがあります。Purchase テーブルのすべての日付について、Items テーブルのすべてのアイテムの購入数を確認したいと思います。以下は、クエリから期待される結果セットです。問題は、特定の日にアイテムが購入されなかった場合、購入テーブルにその記録がないことです。日付は Purchase テーブルから取得する必要があります (連続する日付は不可)。

+-------------------------+----------+----------+
|      PurchaseDate       | ItemName | Quantity |
+-------------------------+----------+----------+
| 2000-01-01 00:00:00.000 | A        |        1 |
| 2000-01-01 00:00:00.000 | B        |        2 |
| 2000-01-01 00:00:00.000 | C        |        4 |
| 2000-01-04 00:00:00.000 | A        |        6 |
| 2000-01-04 00:00:00.000 | B        |        0 | <- This row doesn't exist in Purchase
| 2000-01-04 00:00:00.000 | C        |        0 | <- This row doesn't exist in Purchase
| 2000-01-07 00:00:00.000 | A        |        0 | <- This row doesn't exist in Purchase
| 2000-01-07 00:00:00.000 | B        |        0 | <- This row doesn't exist in Purchase
| 2000-01-07 00:00:00.000 | C        |        3 |
+-------------------------+----------+----------+

以下のデータを使用して上記の結果を得るには、どのようなクエリが必要ですか? SQL Server 2008 R2 を使用しています。

CREATE TABLE Purchase
(
   PurchaseDate DATETIME,
   ItemName NVARCHAR(200),
   Quantity INT
)

CREATE TABLE Items
(
   Value  NVARCHAR(200)
)

INSERT INTO Items VALUES ('A')
INSERT INTO Items VALUES ('B')
INSERT INTO Items VALUES ('C')
INSERT INTO Purchase VALUES ('2000-01-01', 'A', 1)
INSERT INTO Purchase VALUES ('2000-01-01', 'B', 2)
INSERT INTO Purchase VALUES ('2000-01-01', 'C', 4)
INSERT INTO Purchase VALUES ('2000-01-04', 'A', 6)
INSERT INTO Purchase VALUES ('2000-01-07', 'C', 3)
4

3 に答える 3