У меня есть что-то вроде
(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.
В качестве альтернативы я могу сделать это, но это делает запрос менее читаемым (так как мне нужно дважды писать каждое сложное выражение):
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