就是现在有一张表有几个字段  id,je(金额),zt(状态)
表test
id        je       zt
001       1000     0
002       2000     0
003       3000     1
004       -400     0就是现在的话 zt(状态)0=正常  ,1=不正常
现在我就是想得到 我在查询的时候
在金额为负数的时候 怎么表示状 zt=2,也就是说金额为负数的时候,态还是0,还是正常的,但是我想用2来表示
就是 这个select语句应该怎么写?还有一个问题就是我有2张表
test1
id        je       zt
001       1000     0
002       2000     0
003       3000     1
004       -400     0
test2
id        je       zt
001       1000     1
002       2000     1
003       3000     2
004       -400     1我在写2张表联合查询的时候
test1 0=正常 1=不正常
test2 1=正常 2=不正常我就是想问一下 这个我写联合查询的时候 状态怎么可以统一啊?
让test2 在查询出来的时候 1就等于0 2就等于1  
可以喝test1中的状态编码可以统一谢谢

解决方案 »

  1.   

    第一个问题:case when 判断下就可以
    select case when je < 0 then 2 else zt end as zt from test1第二个问题,不是太明白楼主的意思
    test1 跟 test2 两个表的状态,值统一不统一有什么关系么?要把test2的值更新成test1的zt值?
    只是显示的话
    select t1.id ,t2.id ,t1.zt from t1 ,t2 where t1.id = t2.id
      

  2.   

    第1个问题可以用CASE WHEN
    第2个问题都可以用DECODE解决
      

  3.   

    第二个问题  就是
    比如我要做一个2个表联合查询
    第一个表查询出来的结果
    id je zt
    001 1000 0第二个表查询出来的结果
    id je zt
    001 1000 1
    联合查询出来的结果的话 就是
    id  je   zt
    001 1000 0
    001 1000 1就是 我想让他联合查询出来后  zt这个值同意一下
    不如查询表test2的时候
    联合查询出来zt的值和 test1表统一  当test2 表中ZT=1的时候  查询出来的结果
    zt=0
    id  je   zt
    001 1000 0
    001 1000 0
    要不然的话 zt一个为0 一个为1
    这个不统一  感觉好像一个正常 一个不正常 但是实际上 2个结果都是正常的
      

  4.   

    问题 1:
    select id,je,zt,decode(sign(zt),-1,'2',zt) from test;
    问题 2:
    select id,je,zt from test1
    union all
    select id,je,decode(zt,'2',1,0) from test2
      

  5.   

    select id,je,zt from test1
    union all
    select id,je,decode(zt,'2',1,0) from test2