こんな問い合わせがあります
Select
Col_A
,Col_B
,Col_C
,CASE
WHEN (SELECT ...{a very complicated query}...) IS NOT NULL THEN 1
ELSE 0
END CASE AS Col_D
FROM
MyTable
Col_D を生成するサブクエリは、null でない場合、整数を返します。
Col_D の BIT を表示する必要がありますが、それが返す INT も表示する必要があります。通常、サブクエリを書き直して Col_E と呼びますが、複雑であるため、2 回実行したくありません。理想的には、次のようになります。
Select
Col_A
,Col_B
,Col_C
,(SELECT ...{a very complicated query}...) AS Col_E
,CASE
WHEN Col_E IS NOT NULL THEN 1
ELSE 0
END CASE AS Col_D
FROM
MyTable
オプションはありますか?(MS SQL 2008)
編集:申し訳ありません-複雑なクエリには、列に基づくwhere句が含まれていることに言及する必要がありました
SELECT ...{a very complicated query}... WHERE X = Col_A AND Y = Col_B