> select id from topic order by ( case when 1=2 then title else name end );
Привет, да, я тоже об этом думал :) Собственно вот к чему пришел:
Если бы все поля по которым надо сортировать были одного типа (напр.
float8) то всё было бы легче.
select * from (
values
(1.27, 23.46, 56.2, 76.1),
(4.35, 6.76, 45.3, 1.6)
) as sq
order by
case
when false then array[-column1, column3]
when true then array[column1]
else array[column2, -column4, column1]
end
Заметь, что я использую вместо "desc" знак минуса. Т.о. надо написать
функцию сопоставления любого типа к float8, т.е. некий аналог
хэш-функции и будет всем счастье. Я накопал в исходниках PG функцию
convert_to_scalar(), которая именно это и делает, сейчас веду
дискуссию в pgsql-general. Как что-нить решится отпишусь.
--
Regards,
Sergey Konoplev