首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql一次安插多条记录时,希望能够实现指定字段累加1,求解

2012-07-04 
sql一次插入多条记录时,希望能够实现指定字段累加1,求解表HSL_TestPassStatistics数据结构如下:classId,pa

sql一次插入多条记录时,希望能够实现指定字段累加1,求解
表HSL_TestPassStatistics数据结构如下:
classId,passSubjectCount

表数据形式如下三组数据
classId, passSubjectCount
组一:
3 1  
3 2  
3 3  
3 4  
3 5  
3 6  
组二:
4 1  
4 2  
4 3  
4 4  
4 5  
4 6  
组三:
5 1  
5 2  
5 3  
5 4  
5 5  
5 6  

期望得到的结果
当插入同一个班级的记录的时候,每次新插入相同班级的记录是,新增的记录的passSubjectCount字段值能够累加1

要求插入方式采用如下形式,一条语句实现,不能采用循环方
以下写法不正确,但希望能够达到抛砖引玉的效果
INSERT INTO HSL_TestPassStatistics(classId, passSubjectCount)
SELECT classId, 
(
  SELECT COUNT(Id) + 1
FROM TestPassStatistics A
WHERE A.classId = B.ClassId 
)
FROM classTest B

[解决办法]

SQL code
INSERT INTO HSL_TestPassStatistics(classId, passSubjectCount)SELECT classId,(select max(passSubjectCount) from HSL_TestPassStatistics where classid=b.classid)+row_number() over(order by getdate() )  FROM classTest b where b.classid='1'
[解决办法]
SQL code
INSERT INTO HSL_TestPassStatistics(classId, passSubjectCount)SELECT classId,(select max(passSubjectCount) from TestPassStatistics a where a.classid=b.classid)+row_number() over(partition by classId order by (select 0)) nexsque  FROM #HSL_TestPassStatistics b
[解决办法]
探讨
引用:

SQL code
INSERT INTO HSL_TestPassStatistics(classId, passSubjectCount)
SELECT classId,(select max(passSubjectCount) from TestPassStatistics a
where a.classid=b.classid)+row_number() ……

[解决办法]
探讨
那从你觉得合理的角度来看如何设计比较合理

[解决办法]
insert HSL_TestPassStatistics
select @classId ,convert(int, (select max(passSubjectCount) from HSL_TestPassStatistics where classId=@classId) )+1as rr
 

热点排行