Допустим, у меня есть следующий запрос:
select
*,
case when x in ('x','y','z',...) then 'X' end as value_x
from(
select *,
case when condition1 = true
case
when field2 == 'xxxx' then substr(field2, 0, 2)
when field2 == 'yyyy' then substr(field2, 0, 2)
when field2 == 'yxyx' then substr(field2, 0, 2)
...
end
end as value_x
from table) as subquery;
Когда я это делаю, я получаю 2 столбца с именем value_x
. Есть ли способ, которым я могу отфильтровать value_x
с помощью функции IN без необходимости использовать его в каждом отдельном случае? Есть много случаев, и это действительно раздувает запрос.
Структура запроса-подзапроса не может быть изменена, так как существуют десятки тех случаев, в которых значения из подзапроса используются для создания новых столбцов, это первый раз, когда мне нужно обновить один из столбцов, поступающих из подзапроса, и я могу использовать только оператор SELECT
.
Я использую PostgreSQL.