サブクエリと case ステートメントについて質問があります
同じクエリに 2 つの case ステートメントがあります。
- 1 つには、列に一致があるかどうかを判断するために使用されるサブクエリがあります。
- [他のチェックの中で]一致するかどうかをもう一方にチェックしてから、値にタグを付けてもらいたいです。
- ただし、t-SQL では、2 番目の case ステートメント内で (case ステートメントから生成された) 最初のフィールドを参照できません。
- これにより、サブクエリを 2 番目の case ステートメントに追加し、最初の case ステートメントを廃止する必要があります。
- これを行うと、クエリは 13 秒から 2.5 分に短縮されます
- クエリからサブクエリを完全に削除すると、実行に 8 秒かかります
質問 1: case ステートメントで生成されたフィールドは、同じクエリ内の後続の case ステートメントで参照できますか?
質問 2:分離された case ステートメントにサブクエリがある場合、クエリに 5 秒しかかからないのに、そのサブクエリが 4 ~ 5 個の他のチェックがある case ステートメントにある場合に 2 分長くかかるのはなぜですか?
第 1 のケース ステートメント
CASE WHEN (SELECT xxx.xxx from xxx) THEN 'Y'
END AS "Match_Ind",
2 番目のケース ステートメント
CASE WHEN condition 1 = true THEN 'cond1'
WHEN condition 2 = true THEN 'cond2'
WHEN Match_Ind = 'Y' THEN 'matched'
END AS "Match Detail"