我正在尝试创建一个存储过程来汇总我创建的视图中的计数,但是我需要使用自定义参数,因为我想要过滤开始和结束日期(我的两个参数),那些应该是依靠用户输入。
例如,我想要这样的东西,除了我希望@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
答案 0 :(得分: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'
答案 1 :(得分:0)
您可以通过以下方式打电话给您:
Exec spname 'name','param1','param2'
答案 2 :(得分: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