0

ケースステートメントでこれを下のステートメントに書き込もうとしています。特定の列の別の TableB の値を更新しようとしています。

私がした後

Update a 
set DISMMR = 

次に、ケースステートメントで以下の条件をチェックしようとしています

'H01' Is not NULL 
  and
('H02','H03','HR04','S07','S08','S09') Is NULL
 Then 'Unknown'

ここで、この値は table name: からのものTableAで、column name はCodeです。

この特定の列は、NOT NULL

ここで私が言っIs NULLていることは、この特定の値('H02','H03','HR04','S07','S08','S09')が存在しない、または存在しないと言おうとしているということですTableA

列----H01でこの特定の値を言うと、列のこの特定の値が からの列に存在する/存在することを意味します。TableACodeIs not NULLCodeTableA

この条件のチェックが完了したら、WHENで始まる他の case ステートメントを記述して別の条件をチェックし、別の値で更新するため、case ステートメントでこれを行う必要があります。

SQL Server 2008 R2 を使用しています。今、私は以下のクエリを書きました。SSMSでは問題なく動作しますが、SSISパッケージでこのStoreプロシージャを使用すると. パッケージがエラーで失敗します。

[SQL タスクの実行] エラー: クエリ「execute [dbo].[usp_GetMRF_CHP] ?,?,?」を実行しています。次のエラーで失敗しました:「サブクエリが EXISTS で導入されていない場合、選択リストで指定できる式は 1 つだけです。」. 考えられる失敗の理由: クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメーターが正しく設定されていない

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01')
  AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
                 WHERE Code IN ('H02','H03','HR04','S07','S08','S09')
                )
 THEN 'Unknown'
when ---- I have another case here. 

どんな助けでも大歓迎です。前もって感謝します

4

1 に答える 1

0

あなたが正しいと理解したら、Code = 'H01' のレコードが存在し、他のコードのレコードが存在しないかどうかを知りたいと考えています。その場合のステートメントは次のようになります。

CASE WHEN EXISTS(SELECT 1 FROM dbo.TableA WHERE Code = 'H01')
      AND NOT EXISTS(SELECT 1 FROM dbo.TableA 
                     WHERE Code IN ('H02','H03','HR04','S07','S08','S09')
                    )
     THEN 'Unknown'
END
于 2013-04-18T01:57:13.450 に答える