0

我正在尝试创建一个存储过程来汇总我创建的视图中的计数,但我需要使用自定义参数,因为我想过滤开始日期和结束日期(我的两个参数)并且这些应该依赖于用户输入。

例如,我想要这样的东西,除了我希望 @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 回答