我有这样的查询
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 的子查询在它不为空时返回一个整数。
我需要显示 Col_D 的 BIT,但我还需要显示它返回的 INT。通常,我会重写子查询并将其命名为 Col_E,但考虑到它的复杂性,我真的不想运行它两次。理想情况下,我会:
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
我有什么选择吗?(微软 SQL 2008)
编辑:对不起 - 我应该提到复杂的查询包括基于我的列的 where 子句,即
SELECT ...{a very complicated query}... WHERE X = Col_A AND Y = Col_B