說我們有一個表T
查詢中的SQL問題。需要一個更好的/備用查詢
+------+
| NUMM |
+------+
| 1 |
| 5 |
| 3 |
| 8 |
+------+
我想從列numm最近的更大的數量在列numm1。 結果會是這樣
+-------------+
| NUMM | NUMM1|
+-------------+
| 1 | 3 |
| 3 | 5 |
| 5 | 8 |
+-------------+
我寫這樣的查詢和它的作品。但我想知道是否有更好的解決方法。
select numm, numm + min(dif) as numm1
from (select distinct a.numm numm, b.numm numm1, b.numm - a.numm dif
from (select *
from T
where numm != (select max(numm) from T)) a
join T b
on 1 = 1)
where dif > 0
group by numm
如果你有5行? –
這並不是100%清楚你期望的結果 - 你想要每個數字的繼任者嗎? –
@a_horse_with_no_name與我的查詢可以處理任意數量的行。 – arminrock