0

作成したビューでカウントを要約するストアドプロシージャを作成しようとしていますが、開始日と終了日(2つのパラメーター)でフィルター処理する必要があり、それらはユーザーに依存することになっているため、カスタムパラメーターを使用する必要があります入力。

たとえば、@ Nameを、プロシージャ自体ではなく、別の人が設定する値にしたい場合を除いて、このようなものが必要です。これについて行くための最良の方法は何でしょうか?

DECLARE @Name VARCHAR(20)
SET @Name='User1'
SELECT
    SUM(
        CASE
            WHEN Name=@Name THEN Total*-1
            ELSE Total
        END
    ) [Total Adj]
    ,Date
FROM Table
GROUP BY Date
4

3 に答える 3

2

SPを作成するだけです。

CREATE PROC some_proc @Name VARCHAR(20)
SELECT
    SUM(
        CASE
            WHEN Name=@Name THEN Total*-1
            ELSE Total
        END
    ) [Total Adj]
    ,Date
FROM Table
GROUP BY Date

そしてそれを使用してください:

some_proc 'User1'
于 2013-03-10T18:36:35.413 に答える
0

次の方法で電話をかけることができます。

Exec spname 'name','param1','param2'
于 2013-03-10T18:45:13.170 に答える
0

私はテーブル関数が好きです。基本的に手順と同じですが、ビューと同様に使用できます。また、関数が何かを返すので、私は関数を使用してデータを返すことを好みます。プロシージャは何かをします。しかし、これは私の個人的な意見にすぎません。

create function dbo.some_func(@Name Varchar(30))
returns table
as
begin
  return(
    SELECT
      SUM(CASE WHEN Name=@Name THEN Total*-1 ELSE Total END) [Total Adj]
         ,Date
    FROM Table
    GROUP BY Date
)
end
于 2013-03-10T19:35:08.637 に答える