注册 登录
编程论坛 Oracle论坛

怎样写这样的排序语句

summoner 发布于 2007-05-15 12:46, 2320 次点击
数据库中
A B C D
1 1 1 2
2 2 3
3 3 2 1
......
页面上有一列的值:C列的值为null时显示B列相应的值,C列不为null时显示D列的值,
显示在页面上的结果要这样
A X C
1 2 1
2 2
3 1 2
......
现在要求根据显示出来的这一列的值排序,怎么写这条排序语句?

7 回复
#2
bygg2007-05-16 13:32

create PROCEDURE selData
AS

create table #testX
(
ta int,
tx int,
tc int
)
begin
insert into #testX select A,(case C when isnull(C,0) then D else B end) as X ,C from tbABCD
select * from #testX
drop table #testX
end

---------------------
exec selData

#3
summoner2007-05-16 14:17
Error
[row:9,col:29] ORA-00904: "ISNULL": invalid identifier
#4
summoner2007-05-16 14:19
不过用这个就行了
case C when C then B else D end
#5
bygg2007-05-16 15:23
不是吧.我测试时都没有错的呢..
#6
心中有剑2007-05-18 14:02
A B C D
1 1 1 2
2 2 3
3 3 2 1


select A, DECODE(C,NULL,B,D) AS X ,C FROM tableTest order by A
这样就应该可以了吧
#7
dwt2007-10-17 11:07
select a, nvl2(c,d,b) as x , c from aaa;
这个最好
#8
liuye2007-10-23 16:58
select a,nvl2(c,d,b) x,c from aaa;
1