購入とアイテムの 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)