直接看SQL         select y.id, y.name, z.XX_number from YYYY y, ZZZZ z         在实际情况中,可能会出现 y.id 和 y.name 为空值的情况。
         但其实这两列并不为空,可以通过 z.XX_number关联其他的表来查询到具体值。目前考虑用case when         改写后         select 
           case y.id = -1
           when (select id from AAA,BBB where .....) else y.id end ID,
           case y.name = -1
           when (select name from AAA,BBB where .....) else y.name end NAME,
           z.XX_number
        from YYYY y, ZZZZ z        发现两处CASE里的SQL语句完全一样,仅仅是取列的值上有点区别,请问有什么更好的办法么 ?        比如说取到 ID 后 顺便取出 NAME 再赋值给 y.name  (没能想出SQL语句来)
        本人水平有限,请各位出谋划策
       

解决方案 »

  1.   

    select 
              case  
              when y.id = -1 then (select id from AAA,BBB where ..... and rownum = 1) else y.id end ID, 
              case 
              when y.name = -1 then (select name from AAA,BBB where .....and rownum = 1) else y.name end NAME, 
              z.XX_number 
            from YYYY y, ZZZZ z 
      

  2.   

    呵呵,不太会做code的格式,并且也忘记 rownum = 1 这个了,  多谢 suncrafted