オラクルの文法をMySQLにて記述したい
私の質問内容を見て頂きありがとうございます。
もう1件の質問内容のある程度のところまで詰めることができたのですが
1点困っていることがあり、またネット上でも理解できる内容が見つからなかったためこちらに質問させて頂きます。
オラクルにて
--元テーブル
CREATE TABLE T_TEST_4 (
KEY VARCHAR2(8),
NAME VARCHAR2(255)
)
--元テーブルのデータ
KEY NAME
------------------------------
1 AA,AAA,BBB,BBBB,ZZZZZ
2 CCC,DDD,EE,FFFF
--SQL
/* SplitSQL */
select
col1,
col2
from(
select
col1,
col2,
row_number() over (partition by col1 order by col2 desc) rnk
from(
select
substr( name,
case rn when 1 then 1
else instr(name, delm, 1, rn - 1) + 1
end
,case rn when 1 then
case instr(name, delm, 1, rn) when 0 then length(name)
else instr(name, delm,1,rn)-1
end
when nvl(length(translate(name, delm || name, delm)), 0) + 1 then length(name)
else instr(name,delm,1,rn)-1-instr(name,delm,1,rn-1)
end
) col1,
key col2
from
T_TEST_4,
(select ',' delm from dual) b,
(select rownum rn from all_catalog) c
where
rn <= nvl(length(translate(name,delm || name, delm)),0) + 1
)
)
where rnk = 1
order by col1;
--SQL実行結果
COL1 COL2
-------------
AA 1
AAA 1
BBB 1
BBBB 1
CCC 2
DDD 2
EE 2
FFFF 2
ZZZZZ 1
上記の場合
row_number() over (partition by col1 order by col2 desc) rnk
の行はMySQLでどのように記述したら良いのでしょうか?
皆様お忙しい中、もし知っている方がいらっしゃいましたらご回答を宜しくお願い致します。
お礼
早速ありがとうございます。 とても分かりやすくてよかったです。