表一: 订单表 (主键:订单NO 外键:顾客NO  担保人NO)
订单NO  顾客NO   担保人NO     金额     
01         1001     A1        100     
02         1002     A2        200      
03         1003     A3        300      表二: 顾客表(主键:顾客NO)
顾客NO     顾客名    所在地
1001       null     null
1002                
1003       李四      大连表三: 担保人表(主键: 担保人NO)
担保人NO     担保人姓名    所在地
A1            张三        天津
A2            王五        青岛
A3            趙六        广西
我想取得
订单表.订单NO
订单表. 金额
顾客表.顾客名 (当顾客表.顾客名为 null 或顾客表.顾客名为空时,取担保人表.担保人姓名)
顾客表. 所在地(当顾客表.顾客名为 null 或顾客表.顾客名为空时,取担保人表. 所在地)请高手赐招指点.谢谢

解决方案 »

  1.   

    select A.订单NO,A.金额,decode(B.顾客名,null,C.担保人姓名,B.顾客名) 顾客名,
    decode(B.所在地,null,C.所在地,B.所在地) 所在地
    from A,B,C
    where A.顾客NO=B.顾客NO and A.担保人NO=C.担保人NO
      

  2.   

    我没什么经验,不过好像你这个题也不要什么经验。试一下吧,你没有建表,我就用你汉字的前字母建了一个
    SELECT DDB.DDNO,DDB.JE,DECODE(GKB.GKM,NULL,DBRB.DBRXM,GKB.GKM),DECODE(GKB.SZD,NULL,DBRB.SZD,GKB.SZD) FROM DDB,GKB,DBRB
    WHERE DDB.GKNO=GKB.GKNO AND DDB.DBRNO=DBRB.DBRNO--结果
    01 100 张三 天津
    02 200 王五 青岛
    03 300 李四 大连
      

  3.   

    假设你的三张表 一次是 t_a,t_b,t_cselect t_a.订单NO ,t_a.金额
     decode(t_b.顾客NO,null,t_c.担保人姓名,t_b.顾客名),
     decode(t_b.顾客NO,null,t_c.所在地,t_b.所在地),
    from t_a,t_b,t_c
    where t_a.顾客NO=t_b.顾客NO(+)
    and t_a.担保人NO=t_c.担保人NO(+)