3

2つのテーブルがVariablesありProcessesます。
を実装したいのですがINSERT INTO SELECT CASE、これまでに行ったことがありません。

データはからVariables常にになりProcessesます。しかし、私はどの列かわかりません。

例えば ​​:

Variables表には以下の列があります:

Variable_ID
Set_To_Value_ID
Set_To_Variable_ID
Changed_In_SP
Comment_Input

最初の列は常にProcessesテーブルにコピーされます。
Set_To_Value_ID、、、はSet_To_Variable_ID、1つだけが値を持つことができるためChanged_In_SPComment_Inputが必要です。SELECT CASE行のこれらの列のうち3つは常にnullになります。nullでない列はすべて、Processesテーブルに挿入する必要があります。

Processesテーブル :

Process_ID
Variable_ID
Value_ID-(Set_To_Value_IDここに行く)
Manual_Value-(Set_To_Variable_IDChanged_In_SP または Comment_Inputここに行く)

Variable_ID_To_Changeに行きVariable_IDます。

どうやって進める?
ありがとうございました。

4

1 に答える 1

4

Value_ID-(Set_To_Value_IDはここにあります)Manual_Value

Set_To_Variable_ID、Changed_In_SPまたはComment_Inputはここにあります)

COALESCE次のような式を使用できます。

INSERT INTO Processes 
SELECT 
  Set_To_Value_ID,
  COALESCE(Set_To_Variable_ID, Changed_In_SP, Comment_Input)
FROM Variables 

更新:まあ、これにはを使用できなかったので、式COALESCEを使用してこれを行うための標準的な方法は次のとおりです。CASE

INSERT INTO Processes
SELECT
   Set_To_Value_ID,
   CASE 
     WHEN Set_To_Variable_ID IS NOT NULL THEN Set_To_Variable_ID 
     WHEN Changed_In_SP IS NOT NULL THEN  Changed_In_SP
     WHEN Comment_Input IS NOT NULL THEN  Comment_Input 
   END
FROM Variables 
于 2012-11-19T10:48:55.933 に答える