2017-08-08 6 views
0

私は500を超える値のリストを持ち、その値を下のストアドプロシージャに渡す必要があるたびに、これらの価値を動的に呼び出すことは可能でしょうか?ストアドプロシージャのパラメータに値を渡す

RDBMS: SQL Server 2014 

下記の@valueの小集合。

declare @valuetable table 
(
value varchar(50) 
) 

insert @valuetable 

select video union 
select audio union 
select hayward union 
select abott union 
select gsk 

コード:

DECLARE @value VARCHAR(24) SET @value = 'video'  
DECLARE @DAYS INT SET @DAYS = -30    


SELECT * INTO #XTP1 FROM (     
SELECT DISTINCT 'START' AS DTT, DATEADD(D,@DAYS,DATEACTIONED) AS DT FROM NEWREPORTS 
WHERE value = @value       
UNION       
SELECT DISTINCT 'CHANGE' AS DTT, DATEACTIONED AS DT FROM NEWREPORTS 
WHERE value = @value       
)r 

おかげ

+0

これは –

+0

@chiragsataparaのための 'in'クエリを使用します:しかし、私は一度に値1を渡し、出力をexcel – user3751360

+0

に保存したいので、このapiをバックエンドからforループで呼び出さなければなりません。 –

答えて

0

だから、あなたが何をする必要があるか値の名前を格納する#XTP1に1列を追加することです。そうすれば、次のことができます:

declare @valuetable table 
(
value varchar(50) 
) 

insert @valuetable 

select video union 
select audio union 
select hayward union 
select abott union 
select gsk 

SELECT * INTO #XTP1 FROM (     
SELECT DISTINCT v.value, 'START' AS DTT, DATEADD(D,@DAYS,DATEACTIONED) AS DT 
FROM NEWREPORTS n INNER JOIN @valuetable v ON n.value = v.value       
UNION       
SELECT DISTINCT v.value, 'CHANGE' AS DTT, DATEACTIONED AS DT 
FROM NEWREPORTS n INNER JOIN @valuetable v ON n.value = v.value 
)r 

これで、#XTP1のすべてを一度に取得できます。 ORDER BYに "value"を含めることをお勧めします。

+0

ああ!いいえテーブル構造を変更する権限。 – user3751360

+0

テーブルを作成する権限がありますか?その場合は、新しいものを作成してください! –

+0

私は新しいテーブルを作成することができますが、たびに古いテーブルにデータを書き込むETLジョブがあります。 – user3751360

関連する問題