表结构T1:
BEG_VAL NUMBER,
END_VAL NULBER,
DAY_VAL NULBER.查询T1中的所有DAY_VAL字段的值,并比较BEG_VAL和END_VAL的大小,如果BEG_VAL<END_VAL,则DAY_VAL为正数,否则为负数。
怎么实现啊?撒份了,这个难不住论坛的兄弟把!!

解决方案 »

  1.   


    select day_val,
           case when beg_val < end_val then abs(day_val) then -abs(day_val) end as status
    from t1
      

  2.   


    select  decode((BEG_VAL-end_val)-abs(BEG_VAL-end_val),0,abs(DAY_VAL),0-abs(DAY_VAL))
    from t1
    没测试  不过大概是这个意思~
      

  3.   


    第二个 then 应该是 else,写错了~~
      

  4.   

    -- 比较大小,是一个范围值,最好用 cashe ... when 语句表结构T1:
    BEG_VAL NUMBER,
    END_VAL NULBER,
    DAY_VAL NULBER.查询T1中的所有DAY_VAL字段的值,并比较BEG_VAL和END_VAL的大小,如果BEG_VAL<END_VAL,则DAY_VAL为正数,否则为负数。
    怎么实现啊?撒份了,这个难不住论坛的兄弟把!!select t1.beg_val, t1.end_val, t1.day_val,
           (case when beg_val<end_val then abs(day_val) else -abs(day_val) end) as abs_day_val
    from t1;
      

  5.   

    -- 示例如下:
    scott@TBWORA> CREATE table t1(
      2    beg_val number(18,0),
      3    end_val number(18,0),
      4    day_val number(18,0)
      5  );表已创建。scott@TBWORA>
    scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(11,23,-99);已创建 1 行。scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(12,9,168);已创建 1 行。scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(14,39,127);已创建 1 行。scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(128,61,-9);已创建 1 行。scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(1888,1888,-179);已创建 1 行。scott@TBWORA> insert into t1(beg_val,end_val,day_val) values(75,75,893);已创建 1 行。scott@TBWORA> commit;提交完成。scott@TBWORA> select t1.beg_val, t1.end_val, t1.day_val,
      2         (case when beg_val<end_val then abs(day_val) else -abs(day_val) end) as abs_day_val
      3  from t1;   BEG_VAL    END_VAL    DAY_VAL ABS_DAY_VAL
    ---------- ---------- ---------- -----------
            11         23        -99          99
            12          9        168        -168
            14         39        127         127
           128         61         -9          -9
          1888       1888       -179        -179
            75         75        893        -893已选择6行。