表a,
id,arr_name(车次),arrival(到达时间),depart(出发时间)表b
id,arr_name(车次),stn_name_end(终到站)判断如果表a中的arrival,depart,相同,则输出"通过",否则输出arrival,暂时叫结果1,
如果结果1数据id在表b(stn_name_end='北京')这个范围里,则输出"终到"
第一个结果1的sql有了,如何写后面的sql
select  arr_name, arrival,depart, decode(arrival-depart,0,'通过',to_char(arrival,'yyyy-mm-dd hh24:mi:ss'))  a  from b_trainline_ttime where stn_name='北京';
最终的select
--------------------------------------
id, satate, arriveal111  通过    2013-9-9 17:23:02
203  终到    2013-9-9 17:23:02
144  通过    2013-9-9 17:23:02
755  终到    2013-9-9 17:23:02

解决方案 »

  1.   


    select b.id decode(b.id,ax.id,'终到',b.id),ax.arr_name from b left join(
        select  arr_name, arrival,depart, decode(arrival-depart,0,'通过',to_char(arrival,'yyyy-mm-dd hh24:mi:ss'))  a  from b_trainline_ttime where stn_name='北京'
    )ax on b.arr_name= ax.arr_name
      

  2.   

    select a.arr_name,
       case 
            when b.stn_name_end='北京'  '终到'
            when a.arrival=a.depart then '通过'
            else a.arrival
        end 
        as state,
        a.depart,
     from  a, b where a.id=b.id