Re: ORDER BY using specifc values
От | Tom Lane |
---|---|
Тема | Re: ORDER BY using specifc values |
Дата | |
Msg-id | 9548.955609400@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | ORDER BY using specifc values (Ian McWilton <ian@blazingcactus.com>) |
Список | pgsql-sql |
Ian McWilton <ian@blazingcactus.com> writes: > I need to return the results of a SELECT ordered by a > column but in a way that is neither ascending or > descending. > The ORDER BY column can have one of five values and I > want to specify which values are returned in the list > in which order. > An example table below shows the data in the DB: > INDEX | VALUE > 1, A > 2, B > 3, B > 4, C > 5, B > ...and what I want is for my queries result to be > ordered by VALUE with C put first in the list, then A, > then B. > Having investigated it appears that ORDER BY does not > seem to be any help as it restricts the ordering to ASC > or DESC. Make a function f(x) that converts the stored values into a suitable ordering, say C -> 1, A -> 2, B -> 3. Then doORDER BY f(column) If you have no more-elegant ideas at hand, f() could be defined using a CASE expression. In fact you could just write the CASE expression right in ORDER BY, but if you need the same ordering in many different queries then defining a function is probably the way to go. regards, tom lane
В списке pgsql-sql по дате отправления: