T-SQL 返回前一下或下一個值

    “前一個”概念意味着需要邏輯排序,但是我們知道,表中的行是不骨順序的,那我們就需要提供一個等同於“前一個”並能夠以T-SQL表達式表述的概念。這種邏輯等效的一個例子是“小於當前值的最大值”。這句話,在T-SQL中可以使用一個像下面這樣的相關子查詢進行表達:

SELECT orderid,orderdate,empid,custid,

  (SELECT MAX(O2.orderid) FROM order AS 02 WHERE 02.orderid<01.orderid) AS prevorderid

FROM order AS 01;

注意,由於在第一個之前不會有訂單,子查詢會爲第一個訂單返回NULL值。


    同樣,可以將“下一個”概念表述爲“大於當前值的最小值” 。下面爲每一個訂單返回下一個訂單ID的T-SQL查詢。

SELECT orderid,ordate,empid,custid

    (SELECT MIN(orderid) FROM order AS 02 WHERE 02.orderid>01.orderid) AS nextorderid

FROM orders AS 01;

    注意,由於最後一個之後不會有訂單,子查詢爲最後一個訂單返回NULL。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章