SQLCASEステートメントを使用して選択するテーブルを動的に変更する
-
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に入れます(疑似コード、テストされていません): ジェネラコディセタグプレ