我在排序查询结果时遇到麻烦。
执行此查询后:
SELECT id_doc_header, id_clasificacion_doc FROM cabecera_documento INNER JOIN tipo_doc USING (id_tipo_doc) INNER JOIN clasificacion_documento USING (id_clasificacion_doc) WHERE finalizado = 'f' AND cod_exp = '10-APC-2013' AND id_clasificacion_doc in(2,3,4,5) ORDER BY case when Id_clasificacion_doc = 5 THEN 5 when Id_clasificacion_doc = 3 THEN 3 when Id_clasificacion_doc = 2 THEN 2 when Id_clasificacion_doc = 4 THEN 4 END;
或这个:
SELECT id_doc_header, id_clasificacion_doc FROM cabecera_documento INNER JOIN tipo_doc USING (id_tipo_doc) INNER JOIN clasificacion_documento USING (id_clasificacion_doc) WHERE finalizado = 'f' AND cod_exp = '10-APC-2013' AND id_clasificacion_doc in(2,3,4,5) ORDER BY id_clasificacion_doc = 5, id_clasificacion_doc = 3, id_clasificacion_doc = 2, id_clasificacion_doc = 4;
我得到的结果是:
id_doc_header | id_clasificacion_doc ---------------+---------------------- 1657 | 2 1658 | 3 1658 | 2 1661 | 4 1663 | 4 1665 | 5
我的问题是: 我该怎么做才能获得下一个顺序的结果?
id_doc_header | id_clasificacion_doc ---------------+---------------------- 1665 | 5 1658 | 3 1657 | 2 1661 | 4 1663 | 4
我正在使用posgresql 9.1。
提前致谢。
尝试通过以下方式明确显示顺序:
order by (case when id_clasificacion_doc = 5 then 1 when id_clasificacion_doc = 3 then 2 when id_clasificacion_doc = 2 then 3 when id_clasificacion_doc = 4 then 4 end)