考虑分组ID(db2),添加一个订单列,其中值是表中的位置

时间:2015-07-22 07:05:44

标签: sql db2

我需要在下表中添加一个订单栏:

| Id | DepId | Name  | 
|----|-------|-------|
|  1 |   1   |  Bill |
|  2 |   1   |  Joe  |
|  3 |   2   |  Jack |
|  4 |   1   |  Jill |

应该成为:

| Id | DepId | Name  | Order |
|----| ------|-------|-------|
|  1 |   1   |  Bill |   1   |
|  2 |   1   |  Joe  |   2   |
|  3 |   2   |  Jack |   1   |
|  4 |   1   |  Jill |   3   |

我知道让我们按ID使用订单,并且不用担心这样的订单栏,但在这种情况下,当条目转移时难度会增加。

1 个答案:

答案 0 :(得分:1)

您正在寻找ROW_NUMBER()OLAP函数...

您可以(应该)创建一个视图,而不是将列实际添加到物理表中:

create view myview as
 (select Id, DepId, Name
    , ROW_NUMBER() OVER(PARTITION BY DepId ORDER BY DepId, ID) as OrderNbr
  from mytable
 )