2016-09-05 55 views
0
SELECT 
    (case TRIM(T.tactictype) 
     WHEN 'Economics' THEN 
      (select economic_tactic_id from cfext.economic_tactics E where LOWER(E.economic_tactic_name) = LOWER(T.tacticname)) 
     WHEN 'Cyber' THEN 
      (select cyber_tactic_id from cfext.cyber_tactics E where LOWER(E.cyber_tactic_name) = LOWER(T.tacticname)) 
    end) AS tacticid 
FROM cfext.banking_crreport_allfiles T 
LIMIT 50; 

我試圖運行上面的查詢,下面的錯誤。 任何人都可以請幫忙。無法識別子查詢中'選擇'附近的輸入

FAILED:ParseException的線4:1不能識別鄰近 '選擇' 在表達規範 ' '從' economic_tactic_id' 輸入

回答

0

嘗試在使用

SELECT (case TRIM(T.tactictype) WHEN 'Economics' THEN (select E.economic_tactic_id from cfext.economic_tactics E 
    where LOWER(E.economic_tactic_name) = LOWER(T.tacticname)) 
WHEN 'Cyber' THEN (select E.cyber_tactic_id from cfext.cyber_tactics E where LOWER(E.cyber_tactic_name) = LOWER(T.tacticname)) end) AS tacticid 
FROM cfext.banking_crreport_allfiles T LIMIT 50; 
0
SELECT (case TRIM(T.tactictype) 
    WHEN 'Economics' THEN 
     (select et.economic_tactic_id 
     from cfext.economic_tactics et 
     where LOWER(et.economic_tactic_name) = LOWER(T.tacticname)) 
    WHEN 'Cyber' THEN 
     (select e.cyber_tactic_id 
     from cfext.cyber_tactics e 
     where LOWER(e.cyber_tactic_name) = LOWER(T.tacticname)) 
    end) AS tacticid`enter code here` FROM cfext.banking_crreport_allfiles T LIMIT 50; 
0

蜂房不支持子查詢條款SELECT條款。您需要更改邏輯:

SELECT COALESCE(E.economic_tactic_id, C.cyber_tactic_id) as tacticid 
FROM cfext.banking_crreport_allfiles T LEFT JOIN 
    cfext.economic_tactics E 
    ON LOWER(E.economic_tactic_name) = LOWER(T.tacticname) AND 
     TRIM(T.tactictype) = 'Economics' LEFT JOIN 
    cfext.cyber_tactics C 
    ON LOWER(C.cyber_tactic_name) = LOWER(T.tacticname) AND 
     TRIM(T.tactictype) = 'Cyber'; 
相關問題