Re: An order by question
От | Michael Fuhr |
---|---|
Тема | Re: An order by question |
Дата | |
Msg-id | 20040201133451.GA13002@winnie.fuhr.org обсуждение исходный текст |
Ответ на | An order by question (David Arnold <darnold@northcoast.com>) |
Ответы |
Re: An order by question
|
Список | pgsql-sql |
> I need a little help on a sorting problem. Imagine a table, call it > records, that has fields: > > lastName > firstName > term > > I want to sort the records by last name, then first name, and finally by > term. This almost does what I want: > > select * from records order by lastName, firstName, term; > > However, the possible values for term are: > > 2002F > 2003S > 2003X > 2003F > > Where F is for fall, S for spring, and X for summer session. Thus, a > straight alphabetical sort doesn't give me what I want. If the year is the > same, then I want a sort with S, then X, then F for identical year. Consider storing the session in a separate field and assigning each session a value that collates in the order you want. Here's a way to order the sessions using their current format: SELECT * FROM records ORDER BY lastName, firstName, SUBSTRING(term FROM 1 FOR 4), CASE SUBSTRING(term FROM 5) WHEN'S' THEN 1 WHEN 'X' THEN 2 ELSE 3 END; -- Michael Fuhr http://www.fuhr.org/~mfuhr/
В списке pgsql-sql по дате отправления: