2014-01-10 71 views
0

我想通过指定输入参数输入不同的变量到一个过程 - 抱歉,如果这很容易 - 我一直在使用SAS多年,试图找出SQL!CREATE PROCEDURE SQL Server

@VAR是我的输入参数。它可以是我正在查看的数据中的数字或文本。我希望能够说10列,我运行此代码并通过更改输入分别输出结果 - 这是可能的还是有意义的?

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会使这个更困难吗?

+2

需要动态sql的那... –

回答

1

如果您提前知道@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 
相关问题