ストアド プロシージャを SQL Server から Oracle に変換して、製品と互換性を持たせるのに苦労しています。
タイムスタンプに基づいて、いくつかのテーブルの最新のレコードを返すクエリがあります。
SQLサーバー:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=>それは私に最新のレコードを返します
しかし、オラクル:
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
そしてそれは動作します。しかし、特に関係するテーブルに多くのレコードがある場合は、恐ろしいハックのように思えます。
これを達成する最良の方法は何ですか?