2014-02-17 34 views
0

列名我已經寫了這樣的代碼:返回取決於另一列字段值在Oracle

SELECT 
C.*, 
CASE 
    WHEN C.COST_CENTRE_NAME IS NOT NULL THEN 'YES' 
    WHEN C.GL_CODE IS NOT NULL THEN 'YES' 
    WHEN C.MATERIAL_CODE IS NOT NULL THEN 'YES' 
ELSE 
    'NO' END AS DEPENDS_OTHER 
FROM 
OYSTER3.CAT_RULE_MV C 

我想與這個命名DEPENDS_ON添加的另一列,其中此列的列值將取決於根據DEPENDS_OTHER的「是」或「否」值。如果DEPEND_OTHER列值爲YES,那麼它應該返回DEPENDS_OTHER列下面的列名稱爲YES的列名稱。我給下面的例子:

id COST_CENTRE_NAME GL_CODE MATERIAL_CODE depends_other depend_on 
1   a           yes  COST_CENTRE_NAME     
2             no 
3       123      yes   GL_CODE 
4         a2    yes   MATERIAL_CODE 
5              no 

回答

0

只是重複你已經開始什麼:

select c.* 
     ,case 
      when c.cost_centre_name is not null then 
      'YES' 
      when c.gl_code is not null then 
      'YES' 
      when c.material_code is not null then 
      'YES' 
      else 
      'NO' 
     end as depends_other 
     ,case 
      when c.cost_centre_name is not null then 
      'COST_CENTRE_NAME' 
      when c.gl_code is not null then 
      'GL_CODE' 
      when c.material_code is not null then 
      'MATERIAL_CODE' 
      else 
      null 
     end as depends_on 
    from oyster3.cat_rule_mv c 
0

試試這個

SELECT 
C.*, 
CASE 
    WHEN C.COST_CENTRE_NAME IS NOT NULL THEN 'YES' 
    WHEN C.GL_CODE IS NOT NULL THEN 'YES' 
    WHEN C.MATERIAL_CODE IS NOT NULL THEN 'YES' 
ELSE 
    'NO' END AS DEPENDS_OTHER, 
CASE 
    WHEN C.COST_CENTRE_NAME IS NOT NULL THEN 'COST_CENTRE_NAME' 
    WHEN C.GL_CODE IS NOT NULL THEN 'GL_CODE' 
    WHEN C.MATERIAL_CODE IS NOT NULL THEN 'MATERIAL_CODE' 
ELSE 
    ' ' END AS DEPENDS_ON 

FROM 
OYSTER3.CAT_RULE_MV C 
相關問題