这是一条SELECT语句里的打算要SELECT出来的某个字段

 SELECT A.ADDRESS1 
  FROM PS_HM_TB_ADD_VW A 
 WHERE A.EMPLID = J.EMPLID 
   AND A.EFFDT = ( 
 SELECT MAX(ED.EFFDT) 
  FROM PS_HM_TB_ADD_VW ED 
 WHERE ED.EMPLID = A.EMPLID 
   AND ED.EFFDT <= SYSDATE)) AS ADDRESS1
上面这一段是原来的代码,运行没问题。现在要要修改成如果他的国家是中国则地址这一字段赋空。
第一次运行没问题,但是如果修改数据库里的数据后(比如把ADDRESS1从上海路修改成北京路),整个这一条数据在最后的结果里就没了,请问是哪里的问题? 

 SELECT CASE WHEN A.COUNTRY='CHN' THEN '' ELSE A.ADDRESS1 END   FROM PS_HM_TB_ADD_VW A 
 WHERE A.EMPLID = J.EMPLID 
   AND A.EFFDT = ( 
 SELECT MAX(ED.EFFDT) 
  FROM PS_HM_TB_ADD_VW ED 
 WHERE ED.EMPLID = A.EMPLID 
   AND ED.EFFDT <= SYSDATE)) AS ADDRESS1

解决方案 »

  1.   

     A.COUNTRY='CHN' THEN '' ,你看一下你的国家编码是不是 CHN,这个 case when 语句会把所有中国区的地址改为空
      

  2.   

    为什么要用CASE ,
    用DECODE()不更明了吗?
    DECODE(A.COUNTRY,'CHN',NULL, A.ADDRESS1)
      

  3.   

    改了之后这里关联不到数据吧
    A.EMPLID = J.EMPLID  
      AND A.EFFDT = (  
     SELECT MAX(ED.EFFDT)  
      FROM PS_HM_TB_ADD_VW ED  
     WHERE ED.EMPLID = A.EMPLID  
      AND ED.EFFDT <= SYSDATE)