比方說,我有這個表使用「排序依據」和工會內部獲取在SQL上AS400數據庫
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語句。當我將它與union結合使用時,select語句內部不允許使用和獲取函數(AS400沒有限制函數,所以我們使用fetch,或者這樣做)。我總是得到一個關鍵字不是預期的錯誤。這是我的陳述;
(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)
任何人都可以請告訴我什麼是錯的,它應該如何?此外,請分享,如果你知道其他方式來實現我想要的結果。
如果40或者你正在尋找的任何號碼碰巧在你的桌子上,你會得到什麼結果? – WarrenT
是否有可能有相同數量的行?然後怎樣呢? – WarrenT
@WarrenT:其他程序確保該值不會等於金額。但是,謝謝你。這讓我想到了未來可能出現的問題。對於第二個問題,只要我可以得到越來越小的數額,重複金額就可以了。謝謝!! – ides