select 
  decode(e.hospital_id,'6202020012',d.second_money,decode                                          (e.grade_id,'10',d.first_money,'20',d.second_money,'30',d.third_money,0),0) as zfbz
from bf_disease d,bs_hospital e我想实现这样的功能:首先如果医院编码hospital_id为6202020012,则zfbz为second_money,如果是其他医院,则根据该医院的医院等级赋值,一级10的话则zfbz为first_money,二级20为second_money,三级30为third_money。现在的查询语句问题在于:如果医院编码hospital_id为6202020012,则zfbz为second_money,对
                            等于其他医院编码时,查处来的结果为空。
如果把前面的医院编码hospital_id为6202020012限制去点,直接根据医院等级查询都有结果。大家帮我看看到底怎么回事。在线等?????????

解决方案 »

  1.   


    SELECT DECODE (e.hospital_id,
                   '6202020012', d.second_money,
                   DECODE (e.grade_id,
                           '10', d.first_money,
                           '20', d.second_money,
                           '30', d.third_money,
                           0
                          )
                  ) AS zfbz
      FROM bf_disease d, bs_hospital e这样看看你原来
    SELECT DECODE (e.hospital_id,
                   '6202020012', d.second_money,
                   DECODE (e.grade_id,
                           '10', d.first_money,
                           '20', d.second_money,
                           '30', d.third_money,
                           0
                          ), 0
                  ) AS zfbz
      FROM bf_disease d, bs_hospital e
    红字部分有问题
      

  2.   

    试下,好像你decode最后的0是多的
    decode(e.hospital_id,       '6202020012',d.second_money,
         decode(e.grade_id,'10',d.first_money,'20',d.second_money,'30',d.third_money,0)) as zfbz
      

  3.   

    decode 语法
    decode(判断条件,=条件1,结果,=条件2,结果2,默认结果)
    默认结果可以不写的
    你的语句
    DECODE (e.hospital_id, 
                   '6202020012', d.second_money, 
                   DECODE (e.grade_id, 
                           '10', d.first_money, 
                           '20', d.second_money, 
                           '30', d.third_money, 
                           0 
                          ), 0 )
    这样就变成了判断条件=e.hospital_id,条件1='6202020012',结果1=d.second_money
    条件2=DECODE (e.grade_id, 
                           '10', d.first_money, 
                           '20', d.second_money, 
                           '30', d.third_money, 
                           0 
                          ), 结果2=0
    默认值不写,应该是空吧你想要的应该是判断条件=e.hospital_id,条件1='6202020012',结果1=d.second_money
    不等于条件1的话,再做二层DECODEDECODE (e.grade_id, 
                           '10', d.first_money, 
                           '20', d.second_money, 
                           '30', d.third_money, 
                           0 
                          ),