2014-04-04 3 views
0

안녕하세요,이 디코딩 문에 대해 불평하고있는이 오류를 건너 뛸 수있는 다른 방법이 있습니다. 그래서 내가 원하는 subquery 내 access_ind TA500 CO = 12 표시하려면; TA5006-HDT = 14, TA5004-HDT = 13.어떻게 SQL 디코드를 작동시킬 수 있습니까?

DECODE (b.cfg_type, 'TA5000-CO', '12', 'TA5006-HDT', '14', 'TA5004-HDT', '13') access_ind. 

ORA-01790 : 표현식이 해당 표현식과 동일한 데이터 유형을 가져야합니다. 여기에 내 SQL 쿼리가 있습니다.

SELECT a.eid, a.node_sid, a.sw_version, 
      DECODE (a.cfg_type, 
        '7330FTTN', 'Alcatel 7330', 
        '7340FTTU', 'Alcatel 7340', 
        '7342GPON', 'Alcatel 7342' 
        ) cfg_type, 
      a.ems_name, 
      DECODE (a.ems_ip_addr, 'Unknown', NULL, a.ems_ip_addr) ems_ip_addr, 
      a.admin_state, 
      nvl(r.access_ind, 0) access_ind 
     FROM actl73x0 a, RPT_FTTX_ELEMENT_ID r 
     WHERE r.eid (+) = a.eid 
    UNION 
    SELECT b.eid, b.node_sid, b.sw_version, 
      DECODE (b.cfg_type, 'BLM1500', 'Ericsson 1500', 'Ericsson 1500') cfg_type, 
      b.ems_name, 
      DECODE (b.ems_ip_addr, 'Unknown', NULL, b.ems_ip_addr) ems_ip_addr, 
      b.admin_state, 6 access_ind 
     FROM blm b 

    UNION 
    SELECT b.eid, b.node_sid, b.sw_version, 
      DECODE (b.cfg_type, 'TA5000-CO', 'TA5006-HDT', 'TA5004-HDT') cfg_type, 
      b.ems_name, 
      DECODE (b.ems_ip_addr, 'Unknown', NULL, b.ems_ip_addr) ems_ip_addr, 
      b.admin_state, 
      DECODE (b.cfg_type, 'TA5000-CO', '12', 'TA5006-HDT', '14', 'TA5004-HDT', '13') access_ind  
     FROM ecil_ta500x b 
    UNION 
    SELECT e.eid, e.node_sid, e.sw_version, 
      DECODE (e.cfg_type, 'EDA1200', 'EDA 1200', 'EDA 1200') cfg_type, 
      e.ems_name, 
      DECODE (e.ems_ip_addr, 'Unknown', NULL, e.ems_ip_addr) ems_ip_addr, 
       NULL admin_state, 
       nvl(r.access_ind, 0) access_ind 
     FROM eda e, RPT_FTTX_ELEMENT_ID r 
     WHERE r.eid (+) = e.eid 
    ORDER BY 1 ; 

답변

2

ORA-01790노조 문 수단, 당신의 노동 조합의 해당하는 모든 열은 동일한 열 유형 가져야 :

select a from taba 
union 
select b from tabb 
다음

ab을 될 필요가 같은 유형. 여기에 varchar 값이 반환됩니다

DECODE (b.cfg_type, 'TA5000-CO', '12', 'TA5006-HDT', '14', 'TA5004-HDT', '13') access_ind 

: 당신의 부속 선택의 모두에서

당신은 당신의 디코딩을 사용하여 제외한 유형 numberaccess_ind 열 수 있습니다. 그래서 그 오류가 발생합니다. 이 줄을

DECODE (b.cfg_type, 'TA5000-CO', 12, 'TA5006-HDT', 14, 'TA5004-HDT', 13) access_ind 

으로 변경하십시오. 여기서는 '12' 대신 12을 사용합니다.

+0

나는 당신을 잘 이해할 수 있을지 확신하지 못합니다. 내가 말한 것은 다른 가치들에 의존하지 않고이 가치들의 유형에 달려있다. – wumpz

+0

감사합니다. 해당 데이터 유형이 무엇인지 확인하지 않았습니다. – Gio

관련 문제