none
如何比较同一个表中相邻行的值 RRS feed

答案

  • DECLARE @T TABLE(ID INT)
    INSERT @T SELECT 2
    UNION ALL SELECT 1
    UNION ALL SELECT 3
    UNION ALL SELECT 5
    
    ;WITH T
    AS
    (SELECT row=ROW_NUMBER()OVER(ORDER BY (SELECT 1)),ID FROM @T)
    SELECT 
    	a.ID-ISNULL(b.ID,0) AS 與下一個相差 
    FROM T AS a
    	LEFT JOIN T AS b ON a.row=b.row-1
    /*
    1
    -2
    -2
    5
    */
    
     與下一個相差都需要有一個大小關系列
    ROY WU(吳熹)
    • 已标记为答案 Ai-hua Qiu 2011年1月10日 8:06
    2011年1月5日 10:13
    版主
  • 你好,

    你可以贴出你的表结构与示例数据吗?

    除了吴嘉的方法外,你也可以参照下面的例子:

    DECLARE @ex TABLE( 
     id INT, 
     v1 INT, 
     v2 INT) 
    
    INSERT @ex 
    SELECT 1,2,8 
    
    UNION ALL 
    SELECT 2,7,10 
    
    UNION ALL 
    SELECT 3,11,15 
    
    UNION ALL 
    SELECT 4,13,17 
    
    --SELECT * FROM @ex 
    SELECT a.id, a.v1, a.v2 FROM @ex a JOIN @ex b 
       ON a.id - 1 = b.id AND a.v1 <= b.v2 
    
    
    

    谢谢,
    邱爱华


    Ai-hua Qiu[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Ai-hua Qiu 2011年1月10日 8:06
    2011年1月5日 11:32

全部回复

  • DECLARE @T TABLE(ID INT)
    INSERT @T SELECT 2
    UNION ALL SELECT 1
    UNION ALL SELECT 3
    UNION ALL SELECT 5
    
    ;WITH T
    AS
    (SELECT row=ROW_NUMBER()OVER(ORDER BY (SELECT 1)),ID FROM @T)
    SELECT 
    	a.ID-ISNULL(b.ID,0) AS 與下一個相差 
    FROM T AS a
    	LEFT JOIN T AS b ON a.row=b.row-1
    /*
    1
    -2
    -2
    5
    */
    
     與下一個相差都需要有一個大小關系列
    ROY WU(吳熹)
    • 已标记为答案 Ai-hua Qiu 2011年1月10日 8:06
    2011年1月5日 10:13
    版主
  • 你好,

    你可以贴出你的表结构与示例数据吗?

    除了吴嘉的方法外,你也可以参照下面的例子:

    DECLARE @ex TABLE( 
     id INT, 
     v1 INT, 
     v2 INT) 
    
    INSERT @ex 
    SELECT 1,2,8 
    
    UNION ALL 
    SELECT 2,7,10 
    
    UNION ALL 
    SELECT 3,11,15 
    
    UNION ALL 
    SELECT 4,13,17 
    
    --SELECT * FROM @ex 
    SELECT a.id, a.v1, a.v2 FROM @ex a JOIN @ex b 
       ON a.id - 1 = b.id AND a.v1 <= b.v2 
    
    
    

    谢谢,
    邱爱华


    Ai-hua Qiu[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Ai-hua Qiu 2011年1月10日 8:06
    2011年1月5日 11:32
  • 谢谢你们两位,我的问题解决了。再次感谢!

    • 已标记为答案 Ai-hua Qiu 2011年1月10日 8:06
    • 取消答案标记 Ai-hua Qiu 2011年1月10日 8:06
    2011年1月8日 11:24