Sql server 创建过程SQL Server
我正试图通过指定输入参数将不同的变量输入到一个过程中-如果这很容易的话,我很抱歉-我已经使用SAS多年了,并试图找出SQL @VAR是我的输入参数。它可以是我正在查看的数据中的数字或文本。我希望能够有10列,我运行这段代码,并通过改变输入分别输出结果-这是可能的还是有意义的Sql server 创建过程SQL Server,sql-server,stored-procedures,Sql Server,Stored Procedures,我正试图通过指定输入参数将不同的变量输入到一个过程中-如果这很容易的话,我很抱歉-我已经使用SAS多年了,并试图找出SQL @VAR是我的输入参数。它可以是我正在查看的数据中的数字或文本。我希望能够有10列,我运行这段代码,并通过改变输入分别输出结果-这是可能的还是有意义的 declare @VAR as int??? set @VAR = 'exp_year', 'BusYrsExp' CREATE PROCEDURE getExpSum @VAR int as select @VAR, s
declare @VAR as int???
set @VAR = 'exp_year', 'BusYrsExp'
CREATE PROCEDURE getExpSum @VAR int as
select @VAR, sum(NetCost) as clmCost, sum(claimCount) as clmnum, sum(earneddays) as exposure
into ow_exp_year
from CF_BI
group by @VAR
order by @VAR
好的-如果我需要使用动态sql-这个过程可以只用于一个变量吗?动态sql会让这变得更加困难吗?如果您提前知道@VAR的可能值,您可以编写一个
CASE
语句。例如,如果有一个int
值表示某个枚举:
CREATE PROCEDURE getExpSum
@groupColumn int --enumeration: 1=foo, 2=bar, 3=baz
AS
SELECT grp, sum(NetCost) as clmCost,
sum(claimCount) as clmnum, sum(earneddays) as exposure
INTO ow_exp_year
FROM
(
SELECT CASE @groupColumn
WHEN 1 THEN foo
WHEN 2 THEN bar
WHEN 3 THEN baz
END AS grp,
NetCost, claimCount, earneddays
FROM CF_BI
) x
GROUP BY grp
ORDER BY grp
为此需要动态sql。。。