1.创建视图
有两个表(苹果表和梨子表):苹果表:
NO FDM(分店名) PGSL(苹果数量)
1 分店1 100
2 分店2 100
3 分店3 100梨子表:
NO FDM(分店名) LZSL(梨子数量)
1 分店2 100
2 分店3 100
3 分店4 100
我现在想得到这样的视图:
水果总数视图:
NO FDM(分店名) PGSL(苹果数量) LZSL(梨子数量) 合计数量
1 分店1 100 0 100
2 分店2 100 100 200
3 分店3 100 100 200
4 分店4 0 100 100
--测试
--测试数据
create table apple(NO int,FDM varchar(10),PGSL int)
insert apple select 1,'分店1',100
union all select 2,'分店2',100
union all select 3,'分店3',100create table pear(NO int,FDM varchar(10),LZSL int)
insert pear select 1,'分店2',100
union all select 2,'分店3',100
union all select 3,'分店4',100
go2、已知学生成绩表:
姓名 数学 英语 语文
张三 50 80 70
李四 80 68 82
黄六 85 78 90需要得出结果集:
姓名 最大分数 最小分数 平均分数
张三 80.00(英语) 50.00(英语) 66.67
李四 82.00(语文) 68.00(英语) 76.67
黄六 90.00(语文) 78.00(语文) 84.33
脚本:create table ss(sname char(10),c1 numeric(10,2),c2 numeric(10,2),c3 numeric(10,2))
insert into ss values('张三',50,80,70)
insert into ss values('李四',80,68,82)
insert into ss values('黄六',85,78,90)(以下选做)
3、表如下:
分数 班级 姓名
60 1班 张三
40 1班 李四
60 1班 王五
50 2班 刘一
20 2班 吴涛
43 2班 将二
30 3班 李力
79 3班 小煤
80 3班 刘涛想写一个sql语句查询结果如下:
分数 班级 姓名 所在班级总分
60 1班 张三
40 1班 李四 160
60 1班 王五
50 2班 刘一
20 2班 吴涛 113
43 2班 将二
30 3班 李力
79 3班 小煤 189
80 3班 刘涛
也就是说想在查询后多一列“所在班级总分”,而且只能在每组的一条记录中显示出来,该怎么写呀?(提示:isnull()函数,left join)
--测试数据
create table 表(分数 int,班级 varchar(10),姓名 varchar(10))
insert 表 select 60,'1班','张三'
union all select 40,'1班','李四'
union all select 60,'1班','王五'
union all select 50,'2班','刘一'
union all select 20,'2班','吴涛'
union all select 43,'2班','将二'
union all select 30,'3班','李力'
union all select 79,'3班','小煤'
union all select 80,'3班','刘涛'
go
有两个表(苹果表和梨子表):苹果表:
NO FDM(分店名) PGSL(苹果数量)
1 分店1 100
2 分店2 100
3 分店3 100梨子表:
NO FDM(分店名) LZSL(梨子数量)
1 分店2 100
2 分店3 100
3 分店4 100
我现在想得到这样的视图:
水果总数视图:
NO FDM(分店名) PGSL(苹果数量) LZSL(梨子数量) 合计数量
1 分店1 100 0 100
2 分店2 100 100 200
3 分店3 100 100 200
4 分店4 0 100 100
--测试
--测试数据
create table apple(NO int,FDM varchar(10),PGSL int)
insert apple select 1,'分店1',100
union all select 2,'分店2',100
union all select 3,'分店3',100create table pear(NO int,FDM varchar(10),LZSL int)
insert pear select 1,'分店2',100
union all select 2,'分店3',100
union all select 3,'分店4',100
go2、已知学生成绩表:
姓名 数学 英语 语文
张三 50 80 70
李四 80 68 82
黄六 85 78 90需要得出结果集:
姓名 最大分数 最小分数 平均分数
张三 80.00(英语) 50.00(英语) 66.67
李四 82.00(语文) 68.00(英语) 76.67
黄六 90.00(语文) 78.00(语文) 84.33
脚本:create table ss(sname char(10),c1 numeric(10,2),c2 numeric(10,2),c3 numeric(10,2))
insert into ss values('张三',50,80,70)
insert into ss values('李四',80,68,82)
insert into ss values('黄六',85,78,90)(以下选做)
3、表如下:
分数 班级 姓名
60 1班 张三
40 1班 李四
60 1班 王五
50 2班 刘一
20 2班 吴涛
43 2班 将二
30 3班 李力
79 3班 小煤
80 3班 刘涛想写一个sql语句查询结果如下:
分数 班级 姓名 所在班级总分
60 1班 张三
40 1班 李四 160
60 1班 王五
50 2班 刘一
20 2班 吴涛 113
43 2班 将二
30 3班 李力
79 3班 小煤 189
80 3班 刘涛
也就是说想在查询后多一列“所在班级总分”,而且只能在每组的一条记录中显示出来,该怎么写呀?(提示:isnull()函数,left join)
--测试数据
create table 表(分数 int,班级 varchar(10),姓名 varchar(10))
insert 表 select 60,'1班','张三'
union all select 40,'1班','李四'
union all select 60,'1班','王五'
union all select 50,'2班','刘一'
union all select 20,'2班','吴涛'
union all select 43,'2班','将二'
union all select 30,'3班','李力'
union all select 79,'3班','小煤'
union all select 80,'3班','刘涛'
go
create view my_view
asselect
t.FDM,
isnull(a.PGSL,0) PGSL,
isnull(b.LZSL,0) LZSL,
(isnull(a.PGSL,0) + isnull(b.LZSL,0)) as hj
from
(
select distinct FDM from apple
union
select distinct FDM from pear
) t
left join apple a on a.FDM= t.FDM
left join pear b on b.FDM= t.FDM
goselect * from my_view
结果:
分店1 100 0 100
分店2 100 100 200
分店3 100 100 200
分店4 0 100 100