2014-04-04 98 views
0

你好還有另一種方式,我可以繞過這個錯誤,它抱怨我的解碼語句之一。所以我想要的是我的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必須的相同的類型。

在所有的子查詢,你有number類型的access_ind列,除了使用解碼一:

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

這裏返回一個varchar值。所以這是導致錯誤。將此行更改爲

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

它應該工作。這裏我用12而不是'12'等等。

+0

我不知道我是否正確地對待你。我所講的並不取決於不同的值,而是取決於這些值的類型。 – wumpz

+0

啊,那工作謝謝!我沒有檢查過那種數據類型 – Gio

相關問題