好贷网好贷款

数据库插入数据的问题 20wangheng1700]

发布时间:2016-12-5 22:32:21 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"数据库插入数据的问题 20wangheng1700]",主要涉及到数据库插入数据的问题 20wangheng1700]方面的内容,对于数据库插入数据的问题 20wangheng1700]感兴趣的同学可以参考一下。

现在需要创建一张表格式如下: 学号|姓名|成绩|等级 01  |张三|87 | ... |...|...| 30  |王五|90 | 表中有三十个学生信息,现在要求输入成绩后,自动地在等级列中,显示及格的学生中,前2个的等级为“一等”, 第3个到第5个为“二等”, 第5个到第10个为“三等” 请问怎样实现 望指教

--------------------------------- --  Author: liangCK 小梁 --  Date  : 2008-12-07 21:37:02 ---------------------------------   --> 生成测试数据: @T DECLARE @T TABLE (学号 VARCHAR(2),姓名 VARCHAR(4),成绩 INT,等级 VARCHAR(20)) INSERT INTO @T SELECT '01','张三',87,null UNION ALL SELECT '02','李四',50,null UNION ALL SELECT '03','小梁',98,null UNION ALL SELECT '04','依依',50,null UNION ALL SELECT '30','王五',90,null --SQL查询如下: UPDATE A SET     等级=CASE WHEN RID<=2 THEN '一等'               WHEN RID BETWEEN 3 AND 5 THEN '二等'               WHEN RID BETWEEN 6 AND 10 THEN '三等'          END FROM(     SELECT ROW_NUMBER() OVER(ORDER BY 成绩 DESC) AS RID,*     FROM @T     WHERE 成绩>=60 ) AS A SELECT * FROM @T /* 学号   姓名   成绩          等级 ---- ---- ----------- -------------------- 01   张三   87          二等 02   李四   50          NULL 03   小梁   98          一等 04   依依   50          NULL 30   王五   90          一等 (5 行受影响) */

--2000 --------------------------------- --  Author: liangCK 小梁 --  Date  : 2008-12-07 21:37:02 ---------------------------------   --> 生成测试数据: @T DECLARE @T TABLE (学号 VARCHAR(2),姓名 VARCHAR(4),成绩 INT,等级 VARCHAR(20)) INSERT INTO @T SELECT '01','张三',87,null UNION ALL SELECT '02','李四',50,null UNION ALL SELECT '03','小梁',98,null UNION ALL SELECT '04','依依',50,null UNION ALL SELECT '30','王五',90,null --SQL查询如下: UPDATE A SET     等级=CASE WHEN B.RID<=2 THEN '一等'               WHEN B.RID BETWEEN 3 AND 5 THEN '二等'               WHEN B.RID BETWEEN 6 AND 10 THEN '三等'          END FROM @T AS A     JOIN(         SELECT              *,             RID=(SELECT COUNT(*)+1                  FROM @T                  WHERE 成绩>T.成绩)         FROM @T AS T     ) AS B         ON A.学号=B.学号             AND A.成绩>=60 SELECT * FROM @T /* 学号   姓名   成绩          等级 ---- ---- ----------- -------------------- 01   张三   87          二等 02   李四   50          NULL 03   小梁   98          一等 04   依依   50          NULL 30   王五   90          一等 (5 行受影响) */

DECLARE @T TABLE (学号 VARCHAR(2),姓名 VARCHAR(4),成绩 INT,等级 VARCHAR(20)) INSERT INTO @T SELECT '01','张三',87,null UNION ALL SELECT '02','李四',60,null UNION ALL SELECT '03','小梁',75,null UNION ALL SELECT '04','依依',70,null UNION ALL SELECT '05','aa',85,null UNION ALL SELECT '06','bb',50,null UNION ALL SELECT '30','王五',90,null select id=identity(int,1,1),t.*  into # from @t t order by 成绩 desc update t set 等级 =case  when  id between 1and 2 then '一等'                   when id  between 3 and 5 then '二等'                  when id between 6 and 10 then '三等' end from @t t,# where t.学号=#.学号 select * from @t

CREATE TABLE #t(学号 VARCHAR(2),姓名 VARCHAR(4),成绩 INT,等级 VARCHAR(20)) INSERT INTO #t SELECT '01','张三',87,null UNION ALL SELECT '02','李四',50,null UNION ALL SELECT '03','小一',98,null UNION ALL SELECT '04','小二',50,null UNION ALL SELECT '05','小三',60,null UNION ALL SELECT '06','小四',45,null UNION ALL SELECT '07','小五',70,null UNION ALL SELECT '08','小六',81,null UNION ALL SELECT '09','小七',93,null UNION ALL SELECT '10','小八',85,null UNION ALL SELECT '11','小九',74,null UNION ALL SELECT '12','小十',65,null UNION ALL SELECT '30','王五',90,null  update #t  set 等级=case             when  排名 in(1,2) then '一等'             when 排名 between 3 and 5 then '二等'             when 排名 between 6 and 10 then '三等'           end from (select    学号,   姓名,   成绩,   排名=(select count(1)from #t where 成绩>a.成绩)+1 from #t a) b where #t.成绩=b.成绩 and #t.成绩>=60 select * from #t drop table #t /** 学号   姓名   成绩          等级                    ---- ---- ----------- --------------------  01   张三   87          二等 02   李四   50          NULL 03   小一   98          一等 04   小二   50          NULL 05   小三   60          三等 06   小四   45          NULL 07   小五   70          三等 08   小六   81          三等 09   小七   93          一等 10   小八   85          二等 11   小九   74          三等 12   小十   65          三等 30   王五   90          二等 (所影响的行数为 13 行) **/

上一篇:数据库疑难问题 50wangheng1700]
下一篇:数据库难题 20wangheng1700]

相关文章

相关评论