我正在创建一个表,例如学生姓名,班级,滚动号
roll no设置为身份,学生的信息被保存在学生姓名,班级,滚动等表格中
我想要这样
Student Name Class Roll No
Snehal 1 1
Alok 1 2
Sandeep 1 3
Swapnil 1 4
Kunal 1 5
Amit 1 6
Nitin 2 1
Sudhanshu 2 2
Lokesh 1 7
Swati 2 3
Rajesh 1 8
我想要当我插入任何人名并输入1级然后自动滚动时不应该是9当我插入任何名字并放入2级然后滚动否应该是4并且如果我输入人名与类3然后它的滚动不应该从1开始,因为它是第3类第一条记录,之后我输入人名并放入1级然后10它想要以这种方式使用身份功能请尽快建议我“死艰难条件“
答案 0 :(得分:0)
您只需使用SQL Server的ROW_NUMBER()函数即可通过Class
创建分区。这将有效地按类列对结果进行排序,并为类RollNo
提供一个顺序值,直到类更改为止。
SQL架构设置:
CREATE TABLE StudentClass
([Student Name] varchar(9), [Class] int)
;
INSERT INTO StudentClass
([Student Name], [Class])
VALUES
('Snehal', 1),
('Alok', 1),
('Sandeep', 1),
('Swapnil', 1),
('Kunal', 1),
('Amit', 1),
('Nitin', 2),
('Sudhanshu', 2),
('Lokesh', 1),
('Swati', 2),
('Rajesh', 1)
;
SQL SELECT使用ROW_NUMBER()
:
SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY Class ORDER BY Class ) AS RollNo
FROM StudentClass
<强>输出:强>
Student Name Class RollNo
===============================
Snehal 1 1
Alok 1 2
Sandeep 1 3
Swapnil 1 4
Kunal 1 5
Amit 1 6
Lokesh 1 7
Rajesh 1 8
Swati 2 1
Nitin 2 2
Sudhanshu 2 3