我想在oracle的sql中写一个像这样的语句
if (date1>=date2)
  date1
else
  date2
应该和decode很像吧,这是我的感觉 
select decode(to_date('2008-05-01','yyyy-MM-dd')>=to_date('2008-03-01','yyyy-MM-dd'),to_date('2008-05-01','yyyy-MM-dd'),to_date('2008-03-01','yyyy-MM-dd')) from dual
要求和这很类似,只不过用decode sql语句错误
注:必须在sql中不是在存储过程中

如果很好解决另付200分。说到做到

解决方案 »

  1.   

    抢分啦...用case...whenselect case 
           when 
              to_date('2008-05-01','yyyy-MM-dd')>=to_date('2008-03-01','yyyy-MM-dd')
           then
              to_date('2008-05-01','yyyy-MM-dd')
           else 
              to_date('2008-03-01','yyyy-MM-dd')
           end 
    from dual
      

  2.   

    其它decode也行,你得换种写法SELECT decode(sign(to_date('2008-05-01', 'yyyy-MM-dd') -
                       to_date('2008-03-01', 'yyyy-MM-dd')),
                  1,
                  to_date('2008-05-01', 'yyyy-MM-dd'),
                  to_date('2008-03-01', 'yyyy-MM-dd'))
      FROM dualdecode只支持比较值的相等和不相等,所以用sign(正数返回1,否则0)和1比较.
      

  3.   


    SQL> select case
      2  when date1>=date2 then
      3       date1
      4  else
      5       date2
      6  end mydate
      7  from mytable;MYDATE
    -------------------
    2008-07-30 17:25:57已选择 1 行。SQL>
      

  4.   

    来晚了
    对这种有> <什么的判断,用case when else end 便当,并且是标准sql语法
      

  5.   

    同意四楼
    一般有> <比较就用case when
    如果用decode
    就用sign来判断
      

  6.   

    hebo2005,dbcxbj难得晚了一次..不然哪能轮到我...抢个分真不容易.