0

正常に動作するクエリでこれを取得しました:

decode(substr(X_AV_ID,1,3)  
,'ECU','eCom'  
, decode(aven.lib, 'eCom', 'eCom','Autre')) flag,  

次に、新しいパラメーターを追加します (aven.lib Like '%Extra%' で、それを 'extra' としてデコードします)。

だから私はそれを行うケースでサブクエリを作成します:

decode(substr(X_AV_ID,1,3),  
                    'ECU', 'eCom',   
                    (select Case    
                        When aven.lib = 'eCom' Then 'eCom'  
                        When aven.lib Like '%Extra%' Then 'extra'  
                        Else 'Autre'  
                        End  
                     From table_x aven  
                     Limit 1     
                    )  
            ) flag  

結果を 1 に制限して ORA-01427 エラーを回避しましたが、ORA-00907 エラーが発生しました。

デコード コマンドで like を使用したかったのですが、使用できません。

助けてくれてありがとう。

4

2 に答える 2

1

decodeまず、次のように書き換えますcase

(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
      when aven.lib = 'eCom' then 'eCom'
      then 'Autre'
 end) as flag

おそらく、avenすでにクエリに含まれています。したがって、次のことができます。

(case when substr(X_AV_ID, 1, 3) = 'ECU' then 'eCom'
      when aven.lib = 'eCom' then 'eCom'
      when aven.lib like '%Extra%' then 'extra'  
      then 'Autre'
 end) as flag

注:like最初の比較にも一貫して使用し、おそらく最初の 2 つを組み合わせます。

(case when X_AV_ID like 'ECU%' or aven.lib = 'eCom'
      then 'eCom'
      when aven.lib like '%Extra%'
      then 'extra'  
      then 'Autre'
 end) as flag
于 2016-03-21T11:16:08.180 に答える
0

ケースで regexp_like を使用するとうまく機能し、結果は例外になります。

            Case  

                            When substr(X_AV_ID,1,3) = 'ECU'  Then 'eCom'

                            When aven.lib= 'eCom' Then 'eCom'

                            When  REGEXP_LIKE (aven.X_AV_LIBELLE, 'extra', 'i') Then 'extra'

                            Else 'Autre'

                            End

ご協力ありがとうございました

于 2016-03-22T16:16:42.880 に答える