0

以下のクエリからより効率的かつエレガントな方法で MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_FOR_ID_CONTEXT を取得するにはどうすればよいですか?

SELECT MAX(MY_DATE_COLUMN),
 ID,
 listagg(SOME_COLUMN, '') within GROUP (ORDER BY MY_DATE_COLUMN),
 SUBSTR(
      listagg(MY_NUMBER, ';') within GROUP (ORDER BY MY_DATE_COLUMN DESC),
      1,
      instr(
             listagg(MY_NUMBER, ';') within GROUP (ORDER BY MY_DATE_COLUMN DESC),'-') - 1
           ) as MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_IN_ID_CONTEXT
 FROM MY_TABLE
 GROUP BY ID;
4

1 に答える 1

1

私の理解が正しければ、次のものが必要ですkeep

SELECT MAX(MY_DATE_COLUMN), ID,
       listagg(SOME_COLUMN, '') within GROUP (ORDER BY MY_DATE_COLUMN),
       max(MY_LATEST_INSERTED_NUMBER_BASING_ON_MY_DATE_COLUMN_IN_ID_CONTEXT)
           keep (dense_rank first order by MY_DATE_COLUMN DESC)
FROM MY_TABLE
GROUP BY ID;

すべて大文字は、やりたいことを伝えるのに実際には役立ちません。

于 2014-03-14T12:33:47.720 に答える