SELECT DATEADD(DAY,sv.number-1,DATEADD(MONTH, d.m-1,CONVERT(DATETIME,LTRIM(d.y)+'-01-01')))
,CASE WHEN Orders.OrderID IS NULL 'No order' ELSE 'Get Order' END
FROM master.dbo.spt_values AS sv
INNER JOIN (VALUES(1997,1)) d(y,m) ON 1=1
LEFT JOIN Orders ON DATEPART(MONTH, Orders.OrderDate) = d.m AND DATEPART(YEAR, Orders.OrderDate) = d.y
LEFT JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
LEFT JOIN Products ON OrderDetails.ProductID = Products.ProductID
LEFT JOIN Suppliers ON Suppliers.SupplierID = Products.SupplierID AND Suppliers.CompanyName = 'Tokyo Traders'
WHERE sv.type='P' AND sv.number BETWEEN 1 AND DATEPART(DAY, DATEADD(d,-1, DATEADD(MONTH, d.m,CONVERT(DATETIME,LTRIM(d.y)+'-01-01'))))
日のシリアルを生成するためのフォロースクリプトの使用、複数の年と月のデータを生成することができます。
SELECT DATEADD(DAY,sv.number-1,DATEADD(MONTH, d.m-1,CONVERT(DATETIME,LTRIM(d.y)+'-01-01')))
FROM master.dbo.spt_values AS sv
INNER JOIN (VALUES(1997,1)) d(y,m) ON 1=1
WHERE sv.type='P' AND sv.number BETWEEN 1 AND DATEPART(DAY, DATEADD(d,-1, DATEADD(MONTH, d.m,CONVERT(DATETIME,LTRIM(d.y)+'-01-01'))))
-----------------------
1997-01-01 00:00:00.000
1997-01-02 00:00:00.000
1997-01-03 00:00:00.000
1997-01-04 00:00:00.000
1997-01-05 00:00:00.000
1997-01-06 00:00:00.000
1997-01-07 00:00:00.000
1997-01-08 00:00:00.000
1997-01-09 00:00:00.000
1997-01-10 00:00:00.000
1997-01-11 00:00:00.000
1997-01-12 00:00:00.000
1997-01-13 00:00:00.000
1997-01-14 00:00:00.000
1997-01-15 00:00:00.000
1997-01-16 00:00:00.000
1997-01-17 00:00:00.000
1997-01-18 00:00:00.000
1997-01-19 00:00:00.000
1997-01-20 00:00:00.000
1997-01-21 00:00:00.000
1997-01-22 00:00:00.000
1997-01-23 00:00:00.000
1997-01-24 00:00:00.000
1997-01-25 00:00:00.000
1997-01-26 00:00:00.000
1997-01-27 00:00:00.000
1997-01-28 00:00:00.000
1997-01-29 00:00:00.000
1997-01-30 00:00:00.000
1997-01-31 00:00:00.000
サンプルデータと出力を与えてください。 –