*************************************************************************************************
// date 2008-1-24
// auth mircle
// qq 83529101
//msn mircle_wang@hotmail.com
// class oracle
**************************************************************************************************
(部门--人员 一对多 一个部门可以有多个员工,同一个部门内员工不重名)
employee 表
部门 | 人员 |
A | tom |
A | john |
A | mary |
B | longman |
B | solong |
C | tomy |
C | lincon |
----------------------------------------------------------------------- -----------------------
增加一列序号 :要求 序号要按部门不同 从1开始计数
要得到的结果如下
-------------------------------------------------------------------------------------------------
部门 | 人员 | 序号 |
A | john | 1 |
A | mary | 2 |
A | tom | 3 |
B | longman | 1 |
B | solong | 2 |
C | lincon | 1 |
C | tomy | 2 |
-------------------------------------------------------------------------------------------------
oracle sql: |
select 部门,人员,(select sum(1) from employee emA where emA.部门=emB.部门 and emA.人员<=emB.人员) as 序号 from employee emB order by emB.部门,emB.人员 |
这个sql智慧的地方是在:
计算小于它的有多少条记录来计算它的序号
---------------------------------------------------------------------------------------------------