Thread: Special ORDER BY

Special ORDER BY

From
Martín Marqués
Date:
How can I order a result set by a special order of a column. For
example, let's say I have this query


SELECT * FROM subcampo sc JOIN campo c ON (c.codigo = sc.campo)
      WHERE c.etiqueta IN (245, 130, 240, 243, 246, 490, 630, 730, 740)

Now I want to order the result set using c.etiqueta but with the order
of the values as you see in the IN clause.

How can I do that?

--
Martín Marqués
select 'martin.marques' || '@' || 'gmail.com'
DBA, Programador, Administrador

Re: Special ORDER BY

From
Tulio
Date:
You can use something like "CASE WHEN" .. and use a number to order
    your data...
    like this
    SELECT *, CASE WHEN c.etiqueta = 245 THEN 1
        WHEN c.etiqueta = 130 THEN 2
        WHEN c.etiqueta = 240 THEN 3
        WHEN c.etiqueta = 243 THEN 4
        WHEN c.etiqueta = 246 THEN 5
        WHEN c.etiqueta = 490 THEN 6
        WHEN c.etiqueta = 630 THEN 7
        WHEN c.etiqueta = 730 THEN 8
        WHEN c.etiqueta = 740 THEN 9
  end as newcolum FROM subcampo sc JOIN campo c ON (c.codigo = sc.campo)
WHERE c.etiqueta IN (245, 130, 240, 243, 246, 490, 630, 730, 740)
ORDER BY newcolum


    Em 19/06/2012 16:31, Martín Marqués escreveu:
    <blockquote
cite="mid:CABeG9LtRiaAaEULLwxBoud+xcv+HknpFYioUaQYkC2ynq_4t+Q@mail.gmail.com"
      type="cite">
      How can I order a result set by a special order of a column. For
example, let's say I have this query


SELECT * FROM subcampo sc JOIN campo c ON (c.codigo = sc.campo)
      WHERE c.etiqueta IN (245, 130, 240, 243, 246, 490, 630, 730, 740)

Now I want to order the result set using c.etiqueta but with the order
of the values as you see in the IN clause.

How can I do that?





      <span style="font-size:8.0pt;font-family:Tahoma;
        color:green">

Re: Special ORDER BY

From
Hellmuth Vargas
Date:


Helo

This is provided that the list is constant

SELECT * FROM subcampo sc JOIN campo c ON (c.codigo = sc.campo)
     JOIN (values(245,1),(130,2), (240,3), (243,4), (246,5), (490,6), (630,7), (730,8), (740,9)) as d(dato,orden) on (c.etiqueta =d.dato)
     ORDRE BY d.orden



On Tue, Jun 19, 2012 at 2:31 PM, Martín Marqués <martin.marques@gmail.com> wrote:
How can I order a result set by a special order of a column. For
example, let's say I have this query


SELECT * FROM subcampo sc JOIN campo c ON (c.codigo = sc.campo)
     WHERE c.etiqueta IN (245, 130, 240, 243, 246, 490, 630, 730, 740)

Now I want to order the result set using c.etiqueta but with the order
of the values as you see in the IN clause.

How can I do that?

--
Martín Marqués
select 'martin.marques' || '@' || 'gmail.com'
DBA, Programador, Administrador

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



--
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate