2016-12-15 17 views
1

私はtable1とtable2という2つのテーブルを持っています。 table1にはkey、c​​ondition、level、conditionvalueカラムがあり、table2にはkeyカラムとvalueカラムがあります。sqlは他のテーブル値に基づいてローを挿入します

TABLE1行

key   condition level  conditionVal 
1    >  error  10 
1    =  info   5  
2    <  warning  5 
2    >  info   20 

私は、ユーザーまたは他のソースからの入力(キーと値)を取得した値が、私は、次の条件に基づいて、表2に挿入する必要があることでしょう。

キーが1で値が10より大きい場合や値が5の場合、挿入する必要があります。 キーが2で値が20より大きいか値が5より小さい場合は挿入する必要があります。

これを達成するには、SQLのinsert文を使用します。

+2

DBMSを? SQL Server、Oracle、MySQL、...? – CeOnSql

+1

あなたの好きなDBMSのために動的SQLを検索してください – JohnHC

+0

sqlのCASEがお手伝いできますか? – Milaci

答えて

0

これを試してみてください:

IF EXISTS(
      SELECT 1 
      WHERE (@Key=1 AND (@value>10 @value=5)) OR (@Key=2 AND (@value>20 OR @value<5)) 
                          ) 

INSERT INTO Table2 (column1) VALUES (@values) 
0

はこれを試してみてください。

INSERT INTO table2 (KEY, value) 
    SELECT KEY , conditionVal 
    FROM table1 
    WHERE KEY IN 
     (SELECT KEY 
     FROM table1 
     WHERE (KEY  =1 
     AND (value  >10 
     OR value   =5)) 
     OR (KEY   =2 
     AND (value  >20 
     OR value   <5)) 
     AND 
    conditionVal IN 
     (SELECT conditionVal 
     FROM table1 
     WHERE (KEY  =1 
     AND (value  >10 
     OR value   =5)) 
     OR (KEY   =2 
     AND (value  >20 
     OR value   <5)) 
+0

テーブル1の行が動的に追加されます。だから私は動的な解決策が必要です – impulse

関連する問題