2013-03-20 65 views
0

我在我的源代碼中有一個表。 IT有2列週期(varchar)和中心(varchar)。中心的值低於L150 L180 L352,週期爲NULLS。無效的操作員錯誤oracle

我試圖運行此查詢

select TIP.PERIOD 
    from SCOTT.TIP 
where (1=1) 
     and (
     CASEWHEN TIP.CENTRO IN ('L150','L180','L358') 
      THEN TIP.PERIOD = 'C' 
      ELSE TIP.PERIOD = 'D' 
       END) 

但我發現了無效的關係運算符的錯誤。可能是什麼原因?

謝謝!

回答

0
select TIP.PERIOD 
from SCOTT.TIP 
where 
    TIP.PERIOD = 
    CASE 
     WHEN TIP.CENTRO IN ('L150','L180','L358') THEN 'C' 
     ELSE 'D' 
    end 
+0

謝謝回答這個。 – user1751356 2013-03-20 18:58:44

1

這是錯誤的

CASEWHEN 

改變它喲

CASE WHEN 



select TIP.PERIOD 
    from SCOTT.TIP where (1=1) and (
    TIP.PERIOD = CASE WHEN TIP.CENTRO IN ('L150','L180','L358') 
    THEN TIP.PERIOD = 'C' 
    ELSE TIP.PERIOD = 'D' 
    end) 
+0

@ user1751356做你檢查我的代碼 – PSR 2013-03-20 18:34:40

0

所以,tip.period是,你 「定義」 在查詢過程中一個空值?

SELECT 
    CASE 
     WHEN TIP.CENTRO IN ('L150','L180','L358') 
     THEN 'C' 
     ELSE 'D' 
    END as period 
from scott.tip 
0

對於全在Oracle語法,你需要這樣的事:

select TIP.PERIOD 
from SCOTT.TIP 
where (1=1) and (
TIP.PERIOD = 
    CASE WHEN TIP.CENTRO IN ('L150','L180','L358') THEN 'C' ELSE 'D' END