0

ソースにテーブルがあります。ITには、period(varchar)とCenter(varchar)の2つの列があります。センターの値はL150L180L352で、ピリオドの値はNULLです。

このクエリを実行しようとしています

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)

しかし、無効な関係演算子エラーが発生します。理由は何でしょうか?

ありがとう!

4

4 に答える 4

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)
于 2013-03-20T18:29:01.753 に答える
0

それで、tip.periodは、クエリ中に「定義」しているnull値ですか?

SELECT 
    CASE 
        WHEN TIP.CENTRO IN ('L150','L180','L358')
        THEN 'C'
        ELSE 'D'
    END as period
from scott.tip
于 2013-03-20T18:32:53.913 に答える
0
select TIP.PERIOD
from SCOTT.TIP  
where 
  TIP.PERIOD = 
    CASE
      WHEN TIP.CENTRO IN ('L150','L180','L358') THEN 'C'
      ELSE 'D'
    end
于 2013-03-20T18:33:53.227 に答える
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
于 2013-03-20T18:36:14.230 に答える