* FROM table
ORDER BY CASE WHEN "IsField"
Then "Field1" DESC, "Filed2"
Else "Field1" DESC, "Field3"
End
Ругается на синтаксис DESC
Потому что в ORDER BY x, y, ... x и у — это отдельные выражения. Примерно так бы получилось: ORDER BY CASE WHEN IsField THEN Field1 END, CASE WHEN IsField THEN Field2 END, CASE WHEN NOT IsField THEN Field1 END DESC, CASE WHEN NOT IsField THEN Field3 END Но, может, стоит просто посылать разные запросы, а не устраивать такие сложности?
ну или как-то так SELECT *, CASE WHEN IsField THEN Field2 ELSE Field3 END order_field FROM (VALUES (TRUE, 1, 2, 3), (FALSE, 2, 3, 4)) t1 (IsField, Field1, Field2, Field3) order by Field1 desc, order_field
Обсуждают сегодня