1

基本的に、今年の販売量を示す一連の結果を取得するために、1 年 (日付全体ではなく) を入力しようとしています。ただし、これを行う方法がわかりません。以下は、私が持っているものの例です。

ALTER PROC OrderYear
(@OrderYear datetime)
AS

SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE @OrderYear=YEAR(OrderDate)
GROUP BY OrderDate

BEGIN
SET NOCOUNT ON
END

EXEC OrderYear '2005'
4

2 に答える 2

7

範囲は sargable であるため、クエリ述語を範囲として表現する必要があります。

SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE OrderDate >= @firstDayOfYear AND OrderDate <= @lastDayOfYear
GROUP BY OrderDate;

したがって、トリックは、特定の年から@firstDayOfYearandを計算することです。@lastDayOfYearこれは読者の演習として残しておきます。

于 2013-07-15T07:25:12.373 に答える
-1

手順は問題ありません。入力パラメーターのタイプを変更します。

ALTER PROC OrderYear
(@OrderYear int) 
AS
SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE @OrderYear=YEAR(OrderDate)
GROUP BY OrderDate
于 2013-07-15T08:01:02.210 に答える