Как преобразовать Max () KEEP (DENSE_RANK LAST ORDER BY) из Oracle в MariaDB или MySQL - PullRequest
0 голосов
/ 30 мая 2019

Я перевожу Оракула в MariaDB.Возникла проблема с преобразованием сценария Oracle в сценарий MariaDB, этот сценарий можно преобразовать в MariaDB?

Это новый сервер, на котором выполняется MariaDB 10.3.13.Я пробовал онлайн преобразование (sqlLines), затем вставляю код в HeidiQSQL и всегда получаю ошибку.

SELECT o3.id,
    o3.FINISH_DATE,
    o3.START_DATE,
    o3.STEP_OWNER,
    o3.INITIAL_STATUS,
    o3.LAST_STATUS,
    o3.STEP_NAME,
    o3.STAGE_NAME,
    o3.REF_ID,
    o3.REF_STATUS,
    o3.ACTION_BY,
    o3.ELAPSED_TIME,
    DECODE (o3.STEP_NAME, '006' , 'Y' , 'N') AS IS_STP
  FROM os_historyrecord o3
  WHERE o3.id IN
    (SELECT MAX(prev.previous_id) KEEP (DENSE_RANK LAST
    ORDER BY o2.finish_date)
    FROM
      (SELECT id, stage_name, ref_id, finish_date FROM os_currentrecord
      UNION ALL
      SELECT id, stage_name, ref_id, finish_date FROM os_historyrecord
      ) o2,
      (SELECT op.id,
        op.previous_id,
        op.step_index
      FROM os_historyrecord_prev op
      WHERE op.previous_id IN
        (SELECT o.id
        FROM os_historyrecord o,
          LOSA_APP app
        WHERE o.REF_ID       = app.APP_NO
        AND o.stage_name     = '003'
        AND app.product_type = 'CL'
        GROUP BY o.id
        )
      AND op.step_index = 0
      ) prev
    WHERE PREV.id       = O2.id
    AND (O2.STAGE_NAME IN '004'
    OR O2.STAGE_NAME    = '005'
    OR O2.Stage_Name    = '006')
    GROUP BY O2.Ref_Id
    );

Я ожидаю, что выход MariaDB может совпадать с Oracle.

Запрос об ошибке вHeidiSQL.Execute error from MariaDB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...