新しいスキーマと古いスキーマを一致させるために、より良い方法で実行できると思われるいくつかの醜いゆがみを実行する必要があります。参考までに、この照合プロセスについて別の質問をしました:関連する子テーブルからのビューの作成
SQLFiddleに簡略化された例を配置しましたが、その要点は、これらの 2 つの異なるスキーマを調整する唯一の方法は、同じ値に対して 2 つの case ステートメントを実行することです。次のようになります。
SELECT
CASE
WHEN n.FooBarStatusId = 1 OR n.FooBarStatusId = 2
THEN 1
ELSE 0
END as [IsFoo],
CASE
WHEN n.FooBarStatusId = 2
THEN 1
ELSE 0
END as [IsBar]
from Parent p
left join OldStuff o on p.ParentId = o.ParentId
left join NewStuff n on p.ParentId = n.ParentId
同じことを達成するためのより良いおよび/またはより効率的な方法はありますか? これらの case ステートメントは、特定のクエリで何百回もヒットする可能性があり、この特定のロジックが心配です。
この特定のロジック (ビューを構築するためのより大きなクエリの一部) を一時テーブルまたはおそらくテーブル値関数に抽出することを考えましたが、それでも使用する方法を思いつくことはできません複数の case ステートメント。