Обычный перевод будет использовать case
выражение:
MAX(CASE WHEN r.name = 'AREA_SEC_TRANVERSAL' THEN r.value END) as AREA
Фактически, общая замена для DECODE()
- CASE
, который является стандартом SQL для условной логики - я бырекомендуется CASE
даже в базах данных, которые поддерживают DECODE()
.
Однако Postgres поддерживает оператор standard SQL filter
. Я бы порекомендовал использовать это вместо этого:
MAX(r.value) FILTER (WHERE r.name = 'AREA_SEC_TRANVERSAL') as AREA
Мне легче за этим следить (возможно, теперь, когда я к этому привык). Более того, он дает оптимизатору лучшие возможности для повышения производительности.