2013-10-23 75 views
0

我有問題如何根據列表升序數據。例如,我有一個表字段名稱mhn.kod_urusan。我想根據我輸入的列表顯示結果。問題是數據不符合我在列表中輸入的內容。 「和mhn.kod_urusan在( 'PBPTG', 'PBMT')」按listagg排序是不是根據列表數據升序

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 

任何人都知道是什麼問題?

回答

0

PBMT比PBPTG短所以結果是正確的

,如果您需要自定義排序次序,你有一些INT列添加到表mohon,讓它成爲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 

您將需要的條款更改爲使用此列作爲排序字段

+0

現在的問題是我想顯示的數據根據​​我的相同我喜歡我在列表中鍵入。我不想要升序或降序數據。我已經刪除了asc或desc,但該列表仍然沒有顯示我想要怎麼做? –

+0

要實現不同的組和組oracle,必須對數據進行排序,所以你總是會得到排序後的數據,不論是asc還是desc,但是排序後,爲了避免這種情況,你需要更復雜的系統與一些字段,在那裏你會存儲你喜歡的排序順序和排序通過這個字段 –

+0

你能告訴我一個這種情況的例子嗎? –

0

PBMT,PBPTG排序上升。如果你想讓它反轉,按降序排序。

+0

現在的問題是我想根據我在列表中輸入的內容來顯示數據,我不想升序或降序數據,我已經刪除了asc或desc但列表仍然不顯示我想要怎麼做? –

+0

爲了保證一個特定的順序,你必須排序的東西。 – Andrew