sql servser 记录
1.只有一个数据相同,其他都不相同去重
create table cst (gq nvarchar(100),bg nvarchar(100),rs nvarchar(100))
insert into cst values(‘fr’,‘z’,‘b’),(‘lr’,‘ss’,‘cc’),(‘fr’,‘vv’,‘44’)
写法:select px.* from
(select cst.*,row_number() over (partition by gq ORDER BY gq desc ) px from cst ) px
where px=1
- 用一条SQL 语句 查询出每门课都大于80 分的学生姓名
name course grade
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
select name from name_zheng group by name having min(grade)>80
- 现有学生表如下:
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同, 其他都相同的学生冗余信息
create table xs_zheng (serial nvarchar(100),student nvarchar(100),name nvarchar(100),course_id nvarchar(100),course_name nvarchar(100),grade_digit int)
insert into xs_zheng values(‘6’,‘2005001’, ‘张三’, ‘0001’, ‘数学’, 69 ),(‘2’,‘2005002’, ‘李四’, ‘0001’, ‘数学’, 89 ),(‘3’,‘2005001’, ‘张三’, ‘0001’, ‘数学’, 69 )
select max(serial) from xs_zheng group by student,name,course_id,course_name,grade_digit
delete from xs_zheng where serial not in (
select max(serial) from xs_zheng group by student,name,course_id,course_name,grade_digit
)
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合
select * from team a,team b ORDER BY a.name,b.name
- 怎么把这样一个数据表
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成这样一个结果?
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
select year,
(select amount from test_zheng where month=‘1’ and year=a.year) as m1,
(select amount from test_zheng where month=‘2’ and year=a.year) as m2,
(select amount from test_zheng where month=‘3’ and year=a.year) as m3,
(select amount from test_zheng where month=‘4’ and year=a.year) as m4
from test_zheng a GROUP BY year
- 有表A,结构如下:
p_ID p_Num s_id
1 10 01
1 12 02
2 8 01
3 11 01
3 8 03
其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。
请用SQL语句实现将上表中的数据合并,合并后的数据为:
p_ID s1_id s2_id s3_id
1 10 12 0
2 8 0 0
3 11 0 8
其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。
select p_id,
(select P_Num from A where s_id=1 and p_id=1) as s1_id,
(select P_Num from A where s_id=2 and p_id=2) as s2_id,
(select P_Num from A where s_id=3 and p_id=3) as s3_id
from A group by p_id
select p_id,P_num,s_id from a