Псевдоним counter
недоступен для использования в предложении того же уровня select
, поскольку при выборе этого значения counter
не вычисляется.Одним из решений здесь является использование CTE, который сначала вычисляет псевдоним counter
:
with cte as (
select demvbtn, deomsch,
(select count(*) from drmvctl a inner join drmvtbg b
on a.deblgty = b.demvbtn where a.deblgty = :demvbtn) as counter
from drmvtbg
where demvbtn = :demvbtn
)
select demvbtn, deomsch, counter,
case when counter > 0 then 'u' else '' end ctrl
from cte;
Обратите внимание, что я также удалил ваше запятое соединение в стиле старой школы с современным явным внутренним соединением.Это предпочтительный способ написания объединения в наши дни.