*************************************************************************************************
// 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智慧的地方是在:
计算小于它的有多少条记录来计算它的序号
---------------------------------------------------------------------------------------------------
本文介绍了一种在 Oracle 数据库中使用 SQL 查询为部门人员表中的记录动态生成序号的方法。通过一个巧妙的子查询,可以实现按部门对员工进行排序并为每个员工分配一个唯一的序号。
447

被折叠的 条评论
为什么被折叠?



