Thread: ordering by multiple columns
<br /> Hi!<br /><br /> I'm trying to order a list in which the first parameter to order is a specific field, and the secondshould vary depending on a specific condition. More explicit, I would like to do something like:<br /><br /> - ORDERBY a.column1, [b.column2 if c.value != 19 || c.column2 if c.value==19]<br /><br /> That is to say, use a column if avalue on each row isn't 19, OR use a different column if it isn't. How could I solve this? I've got to have a global orderover my query, so I cannot separate it into two queries, etc :-? <br /><br /> Thank you!<br /><br /><br />
Pablo Barrón <amentoraz@gmail.com> schrieb: > > Hi! > > I'm trying to order a list in which the first parameter to order is a specific > field, and the second should vary depending on a specific condition. More > explicit, I would like to do something like: > > - ORDER BY a.column1, [b.column2 if c.value != 19 || c.column2 if c.value==19] > > That is to say, use a column if a value on each row isn't 19, OR use a > different column if it isn't. How could I solve this? I've got to have a global You can do something like this: order by a.column1, case when c.value != 19 then b.column2 else c.column2 end; *untested*, but the way is to use a case when <condition> then ... else ... end; - construct. Andreas -- Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. (Linus Torvalds) "If I was god, I would recompile penguin with --enable-fly." (unknow) Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
On 3/14/07, Pablo Barrón <amentoraz@gmail.com> wrote: > Hi! > > I'm trying to order a list in which the first parameter to order is a > specific field, and the second should vary depending on a specific > condition. More explicit, I would like to do something like: > > - ORDER BY a.column1, [b.column2 if c.value != 19 || c.column2 if > c.value==19] > > That is to say, use a column if a value on each row isn't 19, OR use a > different column if it isn't. How could I solve this? I've got to have a > global order over my query, so I cannot separate it into two queries, etc > :-? > > Thank you! SELECT (...) ORDER BY a.column1, CASE WHEN c.VALUE <> 19 THEN b.column2 ELSE c.column2 END;