pgsql - не получается портировать запрос для postgressql с if then в сортировке
Не получается изменить запрос с mysql на pgsql.
Ошибка конкретно в сортировке на условии:
SELECT
"modTransportPackage".*,
"Provider"."name" AS "provider_name"
FROM
"modx_transport_packages" AS "modTransportPackage"
LEFT JOIN "modx_transport_providers" "Provider" ON modTransportPackage.provider = Provider.ID
WHERE
(
"modTransportPackage"."workspace" = 1
AND (
SELECT
"signature"
FROM
"modx_transport_packages" AS "latestPackage"
WHERE
"latestPackage"."package_name" = "modTransportPackage"."package_name"
ORDER BY
"latestPackage"."version_major" DESC,
"latestPackage"."version_minor" DESC,
"latestPackage"."version_patch" DESC,
IF
( "release" = '' OR "release" = 'ga' OR "release" = 'pl', 'z', IF ( "release" = 'dev', 'a', "release" ) ) DESC,
"latestPackage"."release_index" DESC
LIMIT 1
) = "modTransportPackage"."signature"
)
ORDER BY
"modTransportPackage"."signature" ASC
LIMIT 20
Пробовал что-то по типу:
CASE
"release" WHEN ''
OR "release" WHEN 'ga'
OR "release" WHEN 'pl'
THEN 'z'
ELSE
CASE
"release" WHEN 'dev'
THEN 'a'
ELSE "release"
END
END
DESC
Источник: Stack Overflow на русском