SQLCASEステートメントを使用して選択するテーブルを動的に変更する

StackOverflow https://stackoverflow.com/questions/492613

  •  20-08-2019
  •  | 
  •  

質問

ストアドプロシージャを作成しようとしていますが、特定の列の値に応じて、選択するテーブルを変更できるようにしたいと考えています。例を挙げてみましょう: ジェネラコディセタグプレ

ご覧のとおり、選択したテーブルを動的に変更するだけでなく、これら2つのテーブルは2人の異なる人物によって、2つの異なる時間に作成されたため、列名も異なります。

つまり、私の質問は、SQL Serverが私が作成したクエリを気に入っていないように見えるため、これを実現するための最良の方法は何ですか。

私がやろうとしていることを見た人が、これを行うためのより良い方法を提案できるなら、私はすべての耳になります:-)

役に立ちましたか?

解決

FROM句でCASEステートメントを使用することはできませんが、代わりに次を使用できます。 ジェネラコディセタグプレ

他のヒント

動的SQLステートメントを文字列として作成してから、sp_executesqlストアドプロシージャを呼び出して文字列を実行してみてください。

詳細と例については、こちらをご覧ください。

1つのSQLステートメントで処理を実行する理由がわかりません..私はSQLServerの担当者ではありませんが、Oracleストアドプロシージャでは次のように記述できます ジェネラコディセタグプレ

このようなものはSQLServerでも機能するはずです..誰かがこれを拡張できるかもしれませんか?

あなたは、ItemTypeがどこから来ているのかを本当に説明していません。提案されているように、2つのテーブルを単純に組み合わせる場合は、UNIONが適用される可能性があります。

問題に関連する可能性のある別の可能性があります: ジェネラコディセタグプレ

UNIONクエリを使用して最初にテーブルを結合し、次にSELECTを使用することをお勧めします。

また、テーブルの1つにビューを作成することを検討して、名前を変更するときに必要な列のみをプルし、次にUNIONをプルして、UNIONから選択することもできます。

または、一時テーブルを使用して、各クエリの結果を保存します。一時テーブルの作成をCASEに入れます(疑似コード、テストされていません): ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top