(COMPLEX_EXPRESSION_N
代表长子查询)
select
ID_Operation,
FirstCheck = CASE WHEN (COMPLEX_EXPRESSION_1)= 0 then 0 else 1 end,
SecondCheck = CASE WHEN (COMPLEX_EXPRESSION_2)= 0 then 0 else 1 end,
ThirdCheck = CASE WHEN (COMPLEX_EXPRESSION_3)= 0 then 0 else 1 end,
AllChecksOk = Case WHEN
(FirstCheck + SecondCheck + Third CHeck = 3)
Then 'OK' Else 'No' End
from
AllOperationsTable
是否有可能使用FirstCheck,SecondCheck,ThirdCheck我在AllChecksOk线做?
我不关心性能,这是每天一次手动运行一次的非常少量的记录,我只是想避免创建视图,表或临时表,并将所有内容保存在单个select语句中。
作为altenrative我能做到这一点,但它使查询的可读性(因为我需要写两次每一个复杂的表情):
select
ID_Operation,
FirstCheck = CASE WHEN (COMPLEX_EXPRESSION_1)= 0 then 0 else 1 end,
SecondCheck = CASE WHEN (COMPLEX_EXPRESSION_2)= 0 then 0 else 1 end,
ThirdCheck = CASE WHEN (COMPLEX_EXPRESSION_3)= 0 then 0 else 1 end,
AllChecksOk = Case WHEN
(COMPLEX_EXPRESSION_1+ COMPLEX_EXPRESSION_2+
COMPLEX_EXPRESSION_3CHeck = 3) Then 'OK' Else 'No' End
from
AllOperationsTable
CTE做的工作,我没有看CROSS APPLY,我将其添加为书签的未来。谢谢。 – LaBracca 2011-04-26 13:28:57