2016-09-05 5 views
1

スカラー値を設定しようとしています。必要な結果はSELECT TOP 1 WITH TIESブロックからです。どうやってそれを正しくすることができますか?テクスチャ付きのトップNを選択@scalar_value = count(*)

私がやろうとしていますどのような方法は、次のとおりです。

USE AdventureWorks2014 
GO 
CREATE FUNCTION funcGetLastFridayOrders 
RETURNS SMALLINT 
AS 
BEGIN 
    DECLARE @orders_quantity SMALLINT 
    SELECT TOP 1 WITH TIES @orders_quantity = COUNT(*) 
    FROM Purchasing.PurchaseOrderHeader 
    WHERE DATEPART(DAY,OrderDate) = 5 
    GROUP BY OrderDate 
    ORDER BY OrderDate DESC 
    RETURN @order_quantity 
END 

エラーメッセージ:

はスカラー変数 "@order_quantity"

一方

を宣言する必要があります
DECLARE @var INT 
SELECT @var = intValue FROM table WHERE id = 1 

はうまく動作します。

+3

復帰に使用これはクエリが複数の行を返す可能性を明示的に開きますが、その結果をスカラ変数に代入しますか?私は、この特定の点に達する考えプロセスが何であるかを理解することはできません。 –

+0

私は最後に金曜日にした注文を数えています。 –

答えて

0

しかし、あなたはあなたがTIES` WITH `TOP 1が欲しい

RETURN @order_quantity 
+0

ありがとうございます。私はもっ​​と気配りすることを約束します! –

+0

助けてくれてうれしい – Marusyk

0

リターンラインの入力ミスです。あなたは "orders_quantity"の代わりに "order_quantity"を書いた。

これは修正文です:あなたは構文エラー

DECLARE @orders_quantity SMALLINT

に持って

USE AdventureWorks2014 
GO 
CREATE FUNCTION funcGetLastFridayOrders 
RETURNS SMALLINT 
AS 
BEGIN 
    DECLARE @orders_quantity SMALLINT 
    SELECT TOP 1 WITH TIES @orders_quantity = COUNT(*) 
    FROM Purchasing.PurchaseOrderHeader 
    WHERE DATEPART(DAY,OrderDate) = 5 
    GROUP BY OrderDate 
    ORDER BY OrderDate DESC 
    RETURN @orders_quantity 
END 
関連する問題