Re: Decode function
From: Pierre Charpenay <pcharpenay_at_unilog.fr>
Date: Tue, 26 Oct 1999 14:14:42 +0200
Message-ID: <38159B31.6240CEFD_at_unilog.fr>
Date: Tue, 26 Oct 1999 14:14:42 +0200
Message-ID: <38159B31.6240CEFD_at_unilog.fr>
Hello !
[Quoted] Here is what you want to get :
order by
decode(ITF.ITEM_TYPE,
(between 60 and 64) , 0,
(between 30 and 32) ,1,
45, 2,
90, 3,
46, 4,
5)
And here is a way to get it :
order by
decode(greatest(item_type,64),
64 /* x<=64 */, decode(least(item_type, 60),
60 /* 60<=x<=64 */, 0,
/* x<60 */
decode(greatest(item_type,32),
32 /* x<=32 */,
decode(least(item_type,30),
30 /* 30<=x<=32 */, 1,
/* x<30 */ 5),
/* x>32 */
45, 2,
46, 4,
5)),
/* x>64 */
90, 3,
5)
But you had better to use a function (with some if else ...)
or an external join with a table X like this :
START_VALUE END_VALUE SORT_VALUE
------------------ ---------------- ----------------- 30 32 1 45 45 2 46 46 4 60 64 0 90 90 3
A select clause :
ITF.ITEM_TYPE (+) between X.START_VALUE and X.END_VALUE
And finally, the sort clause :
order by nvl(X.SORT_VALUE,5)
Bye
Pierre Received on Tue Oct 26 1999 - 14:14:42 CEST
