添加订单列中的值是在表中考虑的分组标识(DB2)
问题描述:
我需要一个命令列添加到下表中的位置:添加订单列中的值是在表中考虑的分组标识(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使用顺序,不用担心这样的顺序栏,但在这种情况下,当条目移动时难度会增加。
答
您正在寻找的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
)