动态查询分门别类
动态查询分类
有两个表
1、成绩明细表
学号 姓名 成绩
001 张三 99
002 李四 88
003 王五 77
004 赵四 55
2、成绩登记表
序号 成绩大于等于 成绩小于 等级
1 90 1000 优秀
2 80 90 良好
3 70 80 中等
4 60 70 及格
5 0 60 不及格
想根据表2来查询出如下结果:
学号 姓名 成绩 等级
001 张三 99 优秀
002 李四 88 良好
003 王五 77 中等
004 赵四 55 不及格
请问如何实现
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
;with tb1(学号 ,姓名,成绩) as
(
select 001, 'zs', 99 union all
select 002, 'ls', 88 union all
select 003, 'ww', 77 union all
select 004, 'zhs', 55
)
,tb2(序号, 成绩大于等于, 成绩小于, 等级) as
(
select 1, 90, 100, 'a' union all
select 2, 80, 90, 'b' union all
select 3, 70, 80, ' c' union all
select 4, 60, 70, ' d' union all
select 5, 0 , 60, ' e'
)
select tb1.*, tb2.等级 from tb1
left outer join tb2 on tb1.成绩>=tb2.成绩大于等于 and tb1.成绩<tb2.成绩小于
有两个表
1、成绩明细表
学号 姓名 成绩
001 张三 99
002 李四 88
003 王五 77
004 赵四 55
2、成绩登记表
序号 成绩大于等于 成绩小于 等级
1 90 1000 优秀
2 80 90 良好
3 70 80 中等
4 60 70 及格
5 0 60 不及格
想根据表2来查询出如下结果:
学号 姓名 成绩 等级
001 张三 99 优秀
002 李四 88 良好
003 王五 77 中等
004 赵四 55 不及格
请问如何实现
------解决思路----------------------
create table [成绩明细表]([学号] varchar(10),[姓名] varchar(10),[成绩] int)
insert into [成绩明细表]([学号],[姓名],[成绩])
select '001','张三',99 union all
select '002','李四',88 union all
select '003','王五',77 union all
select '004','赵四',55
go
create table[成绩登记表]([序号] int,[成绩大于等于] int,[成绩小于] int,[等级] varchar(10))
insert into [成绩登记表]([序号],[成绩大于等于],[成绩小于],[等级])
select 1,90,1000,'优秀' union all
select 2,80,90,'良好' union all
select 3,70,80,'中等' union all
select 4,60,70,'及格' union all
select 5,0,60,'不及格'
select a.*,b.[等级]
from [成绩明细表] a,[成绩登记表] b
where a.[成绩] between b.[成绩大于等于] and b.[成绩小于]
学号 姓名 成绩 等级
---------- ---------- ----------- ----------
001 张三 99 优秀
002 李四 88 良好
003 王五 77 中等
004 赵四 55 不及格
(4 行受影响)
drop table [成绩明细表]
drop table [成绩登记表]
------解决思路----------------------
create table test(学号 nvarchar(5),姓名 nvarchar(10),成绩 int)
insert into test values ('001','张三',99)
insert into test values ('002','李四',88)
insert into test values ('003','王五',77)
insert into test values ('004','赵四',55)
create table test1(序号 int,成绩大于等于 int,成绩小于 int,等级 nvarchar(10))
insert into test1 values(1,90,1000,'优秀')
insert into test1 values(2,80,90,'良好')
insert into test1 values(3,70,80,'中等')
insert into test1 values(4,60,70,'及格')
insert into test1 values(5,0,60,'不及格')
select t.*,t1.等级
from test t
LEFT join test1 t1
ON t.成绩>=t1.成绩大于等于 and t.成绩<t1.成绩小于
select t.*,t1.等级
from test t ,test1 t1
where t.成绩>=t1.成绩大于等于 and t.成绩<t1.成绩小于
------解决思路----------------------
;with tb1(学号 ,姓名,成绩) as
(
select 001, 'zs', 99 union all
select 002, 'ls', 88 union all
select 003, 'ww', 77 union all
select 004, 'zhs', 55
)
,tb2(序号, 成绩大于等于, 成绩小于, 等级) as
(
select 1, 90, 100, 'a' union all
select 2, 80, 90, 'b' union all
select 3, 70, 80, ' c' union all
select 4, 60, 70, ' d' union all
select 5, 0 , 60, ' e'
)
select tb1.*, tb2.等级 from tb1
left outer join tb2 on tb1.成绩>=tb2.成绩大于等于 and tb1.成绩<tb2.成绩小于