按列表数据排序不按列表数据递增

时间:2013-10-23 02:19:24

标签: sql oracle oracle-sqldeveloper

我有问题如何根据列表提升数据。例如,我有一个表字段名称mhn.kod_urusan。我想根据我输入的列表显示结果。问题是数据不符合我在列表中输入的内容。 “和mhn.kod_urusan in('PBPTG','PBMT')”

This is my query:-
select LISTAGG (upper(aa.kod_urusan), ', ') within Group (order by aa.kod_urusan asc) as daerah
from
(select  distinct
mhn.kod_urusan,kc.nama nm
from
mohon mhn, kod_urusan ku, kod_caw kc
where
 mhn.kod_urusan = ku.kod(+)
and mhn.kod_caw = kc.kod(+)
and (mhn.trh_masuk  <= sysdate )
and mhn.kod_urusan in ('PBPTG','PBMT')  
and mhn.kod_caw = '01'
order by mhn.kod_urusan asc )aa


This is the result:-
 --Daerah--
  PBMT, PBPTG

任何人都知道这个问题是什么?

2 个答案:

答案 0 :(得分:0)

PBMT比PBPTG短,所以结果还可以

如果您需要自定义排序顺序,则必须向表mohon添加一些int列,将其设为int myordercol;

对于kod_urusan中的所有不同值,您应使用以下查询:

update mohon set myordercol = 1 where kod_urusan='PBPTG';
update mohon set myordercol = 2 where kod_urusan='PBMT';
.. and so on, so in such way you're establishing custom order for this columns

在此之后,您需要通过子句更改您的订单,以将此列用作排序字段

答案 1 :(得分:0)

PBMT,PBPTG按升序排序。如果你想要它反转,排序下降。