2014-01-10 2 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 
관련 문제