将行信息与上一行SQL集成

时间:2019-08-05 11:56:46

标签: sql sql-server

我需要将行信息与以前的行进行整合

|      ID      |   no| number |
+--------------+-----+--------+
|       1      |   40|   10   |
|       2      |   32|   12   |
|       3      |   40|   15   |
|       4      |   45|   23   |
|       5      |   32|   15   |
|       6      |   12|   14
|       7      |   40|   20
|       8      |   32|   18
|       9      |   45|   27
|       10     |   12|   16

所需结果:

|      ID      | no  | number | last number
+--------------+-----+--------+-------------
|       1      |  40 |   10   |     0
|       3      |  32 |   12   |     0
|       3      |  40 |   15   |     0
|       4      |  45 |   23   |     0
|       5      |  32 |   15   |    12
|       6      |  12 |   14   |     0
|       7      |  40 |   20   |    15
|       8      |  32 |   18   |    15
|       9      |  45 |   27   |    23
|      10      |  12 |   16   |    14

1 个答案:

答案 0 :(得分:0)

我的最佳猜测是-您正在寻找以下脚本。但是根据以下逻辑,“ id = 3”行应在“ last number”列中获得10作为值。

您可以检查DEMO HERE

SELECT *, 
ISNULL
(
    (
        SELECT number 
        FROM your_table C 
        WHERE C.ID = 
        (
            SELECT MAX(ID) FROM your_table B WHERE B.ID < A.ID AND B.no = A.No
        )
    )
,0) [last number]
FROM your_table A

输出为-

ID  no  number  last number
1   40  10      0
2   32  12      0
3   40  15      10
4   45  23      0
5   32  15      12
6   12  14      0
7   40  20      15
8   32  18      15
9   45  27      23
10  12  16      14