Mysql から oracle へのクエリを書き直しましたが、Mysql は 1 つの行を与え、oracle は倍数を与えるのはなぜか?
Mysql クエリ
select me.col1,
me.col2,
me.col3,
min(col3) as me_col3 ,
group_concat(col2) col4,
from
my_sql_table me
group by me.col2
order by col3
Oracle に書き換える
select
me.col1,
me.col2,
me.col3,
min(col3) over (partition by episode_id order by col3) as me_col3 ,
LISTAGG(col2, ',') WITHIN GROUP (ORDER BY col3) over (partition by col2)
from
my_sql_table me
group by me.col1,me.col2,me.col3
order by col3
そのクエリを書き換えて、Mysql と Oracle で同じ結果が得られるようにする方法はありますか?
いくつかの調査を行ったところ、を削除するgroup_concat
とlistagg
、Mysql と Oracle で同じ結果が得られることがわかりました。しかし、group_concat
バックを追加すると、Mysql と Oracle の間で結果が異なります。