ここで私はストアドプロシージャを作成しようとしています.. detepartによってグループを作成しようとしています。どのようにストアドプロシージャの可変部分をdatepart関数として宣言する
CREATE PROCEDURE sp_NewvsOldOrders
(
@StartDate DATETIME,
@EndDate DATETIME
)
AS BEGIN
DECLARE @NewCount INT
, @NewRevenue INT
, @NewDate DATETIME
SELECT
@NewDate = DATEPART(DAY, od.OrderDate)
, @NewCount = COUNT(*)
, @NewRevenue = SUM((CONVERT(DECIMAL(18, 2), od.TotalAmount)))
FROM orderdetails od
INNER JOIN customer c
ON od.customerid = c.customerid
WHERE (CONVERT(DATETIME, (CONVERT(VARCHAR(50), od.orderdate, 101))) BETWEEN @StartDate AND @EndDate)
AND ((CONVERT(DATETIME, (CONVERT(VARCHAR(50), od.orderdate, 101)))) = (CONVERT(DATETIME, (CONVERT(VARCHAR(50), c.registereddate, 101)))))
AND (od.TransactionId IS NOT NULL)
AND (od.TransactionId <> '')
GROUP BY DATEPART(DAY, od.OrderDate)
, od.OrderDate
END
を達成しようとしているものを伝えることができますと 'od.OrderDate'です。 'DATEPART(DAY、Od.OrderDate)'は 'od.OrderDate'の日の部分であるため、' DATEPART(DAY、od.OrderDate) 'は冗長です – Squirrel
クエリでは、' GROUP BY'が結果の1行行結果の1つだけが変数に代入されます。 – Squirrel
'DATEPART()'は、指定された日付の指定されたdatepartを表す整数を返します。なぜなら、 '@ NewDate'のデータ型は' DATETIME'ですか?それは整数でなければならない – Raj