このテーブルがあるとしましょう
Table name: Traffic
Seq. Type Amount
1 in 10
2 out 30
3 in 50
4 out 70
私が必要とするのは、前の小さい値と次に大きい値を取得することです。したがって、値として 40 がある場合、次のようになります...
Table name: Traffic
Seq. Type Amount
2 out 30
3 in 50
私はすでにMYSQLでそれを試してみましたが、結果には非常に満足しています
(select * from Traffic where
Amount < 40 order by Amount desc limit 1)
union
(select * from Traffic where
Amount > 40 order by Amount desc limit 1)
問題は、AS400 で受け入れられる SQL ステートメントに変換しようとしたときに発生します。order by と fetch 関数 (AS400 には limit 関数がないため、fetch を使用しますか?) は、select ステートメント内でユニオンと共に使用すると許可されないようです。予期しないキーワードのエラーが常に発生します。これが私の声明です。
(select seq as sequence, type as status, amount as price from Traffic where
Amount < 40 order by price asc fetch first 1 rows only)
union
(select seq as sequence, type as status, amount as price from Traffic where
Amount > 40 order by price asc fetch first 1 rows only)
何が間違っていて、どうあるべきか教えてください。また、私の望ましい結果を達成するための他の方法を知っている場合は、共有してください.