ストアドプロシージャをSQL ServerからOracleに変換して、互換性のある製品にするのに苦労しています。
タイムスタンプに基づいて、いくつかのテーブルの最新のレコードを返すクエリがあります。
SQLサーバー:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=>最新のレコードが返されます
しかしOracle:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=>これにより、ORDER BY
ステートメントに関係なく、最も古いレコードが返されます(おそらくインデックスによって異なります)。
私の要件に一致させるために、この方法でOracleクエリをカプセル化しました。
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
そしてそれは動作します。しかし、関係するテーブルに多くのレコードがある場合は特に、私にとっては恐ろしいハックのように思えます。
これを達成するための最良の方法は何ですか?