0

列Config_ID、Escalation_Levelを持つOracleテーブルがあります

このテーブルでは、Escalation_Level は'L0'、'L1'、'L2'、'L13'、'L4'、'L3'、'L5'、'L22'、'L19'、'L41' の Varchar です。 「L98」、「L99」がごちゃまぜの Config_ID です。

Escalation_Level の N 番目の MIN を見つける方法。これは Varchar 型であるため、簡単な方法は見つかりません。

あなたの考えを共有してください。

よろしく、 スリラム

4

2 に答える 2

1

何かの N 番目の値を見つけたい場合は、分析関数NTH_VALUE()を開始するのに適しています。

数値部分のみに基づいてこれが必要であると仮定すると、使用できる数値ではないすべてのものを置き換える必要がありますREGEXP_REPLACE()

select regexp_replace(escalation_level, '[^[:digit:]]')
  from my_table

特定の CONFIG_ID の N 番目の値を取得するには、次のようにします。

select nth_value(escalation_level, n)
         over ( partition by config_id 
                    order by regexp_replace(escalation_level, '[^[:digit:]]') )
  from my_table

wherenは、返したい値のインデックスです。

于 2013-10-14T12:35:36.490 に答える