日期:2014-05-18  浏览次数:20540 次

MS-SQL 同一类型自动编号 难题
我现在有这么一张表
例如:

Categroy(学科分类) Class(课程分类)Lesson(课程名称)
计算机 编程语言 c
计算机 编程语言 c++
计算机 编程语言 Java
计算机 数据库 SQL
计算机 数据库 Oracle
基础科目 数学 高等数学
基础科目 数学 离散数学

我最终想生成结果

ID Categroy Class Lesson
1 计算机 编程语言 c
2 计算机 编程语言 c++
3 计算机 编程语言 Java
1 计算机 数据库 SQL
2 计算机 数据库 Oracle
1 基础科目 数学 高等数学
2 基础科目 数学 离散数学

这里id是根据 Category 和class 来决定的,同一个种类的自动编号
这样的SQL应该如何写,求教。

------解决方案--------------------
SQL code
select 
  ID=row_number()over(partition by Categroy,Class order by (select 1)),
  Categroy,
  Class,
  Lesson
from tb

------解决方案--------------------
探讨

SQL code
select
ID=row_number()over(partition by Categroy,Class order by (select 1)),
Categroy,
Class,
Lesson
from tb