忻州市环境保护税 培训班好一点的电脑培训班有没有?

在SQL中怎样查询一个表的第20条数据到30条数据-mssql-电脑编程网在SQL中怎样查询一个表的第20条数据到30条数据作者:zhongweng 和相关&&在SQL中怎样查询一个表的第20条数据到30条数据------回答---------------其他回答(20分)---------SQL code
select top 30 * from BS_person
except
select top 20 * from BS_person
------其他回答(20分)---------参考SQL code
取n到m行
1.
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表
set rowcount n
--只取n条结果
select * from 表变量 order by columnname desc
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
4.如果tablename里没有其他identity列,那么:
先生成一个序列,存储在一临时表中.
select identity(int) id0,* into #temp from tablename
取n到m条的语句为:
select * from #temp where id0 & =n and id0
如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
5.如果表里有identity属性,那么简单:
select * from tablename where identity_col between n and m
6.SQL2005开始.可以使用row_number() over()生成行号
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
------回答---------------其他回答(20分)---------
SQL code
select top 30 * from BS_person
except
select top 20 * from BS_person
------其他回答(20分)---------
参考SQL code
取n到m行
1.
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表
set rowcount n
--只取n条结果
select * from 表变量 order by columnname desc
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
4.如果tablename里没有其他identity列,那么:
先生成一个序列,存储在一临时表中.
select identity(int) id0,* into #temp from tablename
取n到m条的语句为:
select * from #temp where id0 & =n and id0
如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
5.如果表里有identity属性,那么简单:
select * from tablename where identity_col between n and m
6.SQL2005开始.可以使用row_number() over()生成行号
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
相关资料:|||||||在SQL中怎样查询一个表的第20条数据到30条数据来源网络,如有侵权请告知,即处理!编程Tags:                &                    2016年4月荣获微软MVP荣誉称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号
2016年7月 MS-SQL Server大版内专家分月排行榜第一
2016年4月荣获微软MVP荣誉称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号
2016年7月 MS-SQL Server大版内专家分月排行榜第一
2016年4月荣获微软MVP荣誉称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号
2016年7月 MS-SQL Server大版内专家分月排行榜第一
2016年4月荣获微软MVP荣誉称号2015年4月荣获微软MVP称号2014年4月 荣获微软MVP称号
2016年7月 MS-SQL Server大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。2925人阅读
数据库(7)
摘录于论坛和网上:
from tablename
not in (select
from tablename
order by id
asc/*|desc*/)
into 临时表(或表变量)
from tablename
by columnname
-- 将top m笔插入到临时表
rowcount n
--只取n条结果select
* from 表变量
by columnname
from (select
* from tablename
by columnname) a
order by columnname
4.如果tablename里没有其他identity列,那么: 先生成一个序列,存储在一临时表中.select
identity(int) id0,*
into #temp
from tablename 取n到m条的语句为:
* from #temp
&= m 如果你在执行select
identity(int) id0,*
into #temp
from tablename这条语句的时候报错,那是因为你的DB中间的select
into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
5.如果表里有identity属性,那么简单:
* from tablename
where identity_col
6.SQL2005开始.可以使用row_number()
over()生成行号;with cte
select id0=row_number()
over(order
from tablename)select
* from cte
between n to m&
<span style="color:#.
& --从TABLE表中取出第m到n条&(Exists版本)
&SELECT&TOP&n-m&#43;1&*&FROM&TABLE&AS&a&WHERE&Not&Exists
(Select&*&From&(Select&Top&m-1&*&From&TABLE&order&by&id)&b&Where&b.id=a.id&)&
&Order&by&id
<span style="color:#.
&--m为上标,n为下标,例如取出第8到12条,m=8,n=12,Table为表名
Select&Top&n-m&#43;1&*&From&Table&
&Where&Id&(Select&Max(Id)&From&
&(Select&Top&m-1&Id&From&Table&Order&By&Id&Asc)&Temp)&
&Order&By&Id&Asc&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:81105次
积分:1212
积分:1212
排名:千里之外
原创:35篇
转载:43篇
(5)(1)(1)(1)(3)(9)(1)(4)(3)(2)(3)(1)(1)(3)(5)(3)(1)(1)(2)(4)(6)(1)(8)(2)(7)本帖子已过去太久远了,不再提供回复功能。30条经典的SQL语句 - 开源中国社区
当前访客身份:游客 [
当前位置:
关于索引,推荐转载的这篇文章
改善SQL语句的效率
数据量很大怎样加快索检速度
索引建立方法的区别
频繁插入删除数据需要更新索引
测试了一下sql server 2005 全文检索
其他关于效率的高频问题
判断一个表的数据不在另一个表中最优秀方法?
删除千万级表中重复记录的办法
数据库数据查询变得不正常类型问题
大数据量,稳定运行一段时候以后无法得到查询结果。
返回表的字段名称
select name from syscolumns where id=object_id('jobs')
select * into b from a where 1&&1
--刚看到的.新建一个与a表一样的空的b表 select * into b from a where 1&&1
--刚看到的.新建一个与a表一样的空的b表
精点,经典, 一些不错的sql语句,自己根据需要收藏吧,分给多点哦:) 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1&&1 法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '&&Server.MapPath(&.&)&&\data.mdb& &&' where..
4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a & 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&5
13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录 select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据 select top 10 * from tablename order by newid()
18、说明:随机选择记录 select newid()
19、说明:删除重复记录 Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名 select name from sysobjects where type='U'
21、说明:列出表里的所有的 select name from syscolumns where id=object_id('TableName')
22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。 select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type 显示结果: type vender pcs 电脑 A 1 电脑 A 1 光盘 B 2 光盘 A 2 手机 B 3 手机 C 3
23、说明:初始化表table1 TRUNCATE TABLE table1
24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc --如何将exec执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
--------------------------------------------------------------------------------
动态sql语句基本语法
1 :普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确
3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
一些不错的sql语句 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1&&1 法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '&&Server.MapPath(&.&)&&\data.mdb& &&' where..
4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、说明:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a & 1;
8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2
9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&5
13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录 select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据 select top 10 * from tablename order by newid()
18、说明:随机选择记录 select newid()
19、说明:删除重复记录 Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名 select name from sysobjects where type='U'
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 ) select * from sysobjects where xtype='tr' --返回库中触发器 select * from sysobjects where xtype='U'&& --返回库中用户表 dinoLgrace(淡泊以明志,宁静而致远) 24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
好聪明的语句
在CSDN上學到了一些 1.日期算當月天數: &&& select Day(dateadd(day,-1,convert(datetime,convert(char(07),dateadd(m,1,getdate()),120)+'-01'))) &&& select 32-Day(getdate()+(32-Day(getdate())))
2.簡單的分割字串: &&& 用' union all select 'replace'分割符'
3.... && Order By可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名) Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3
--修改用户数据库的排序规则 ater database dbname collate SQL_Latin1_General_CP1_CI_AS
--修改字段的排序规则 alter table a alter column c2 varchar(50) collate SQL_Latin1_General_CP1_CI_AS
--按姓氏笔画排序 select * from 表名 order by 列名 Collate Chinese_PRC_Stroke_ci_as
--按拼音首字母排序 select * from 表名 order by 列名 Collate Chinese_PRC_CS_AS_KS_WS
--查找一个Server下含有某个表名的数据库名字 EXEC sp_msforeachdb ' USE [?] IF OBJECT_ID(N''表名'') IS NOT NULL PRINT N''?'''
--查询所有表名、字段名及字段描述 select
&&&& 表名=object_name(id),
&&&& 列名=col_name(object_id(object_name(id)),smallid),
&&&& 描述=value
from&& sysproperties
--查询所有表的记录数明细 --方法(1) select&& &&&& a.name,b.rows&& from&& &&&& sysobjects a, sysindexes b where&& &&&& a.name=b.name and&& a.type='u'
--方法(2) sp_msforeachtable 'select ''?'' as ''表名'',(select sum(1) from ?) as ''记录数'''
--复制表(表结构) --方法(1) select * into Employee_bak from Employee where 1&&1 --方法(2) select top 0 * into Employee_bak from Employee --方法(3) --企业管理器中的右键表--&复制,然后在查询分析器中粘贴查看SQL语句
--判断两字符是否完全(区分大小写)相等(如何判断字符的大小写) declare&& @v&& nvarchar(10)&& declare&& @p&& nvarchar(10)&& set&& @v='NIPSAN'&& if&& cast(@v as&& varbinary)= cast(@p as varbinary)&& &&&& print N'相等'&& else&&&& &&&& print N'不等'&&
--得到数据库中所有表的空间/记录情况 exec sp_MSForEachTable
@precommand=N' create table ##( id int identity, 表名 sysname, 字段数 int, 记录数 int, 保留空间 Nvarchar(10), 使用空间 varchar(10), 索引使用空间 varchar(10), 未用空间 varchar(10))', @command1=N'insert ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) exec sp_spaceused ''?''
update ## set 字段数=(select count(*) from syscolumns where id=object_id(''?''))
where id=scope_identity()', @postcommand=N'select * from ## order by id drop table ##'
--查看硬盘分区: EXEC master..xp_fixeddrives
--Order By的一个小技巧 /* Order By可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名) Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3 */ 表结构新
表名=case when a.colorder=1 then d.name else '' end, 表说明=case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.name, 标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end, 主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid ))) then '√' else '' end, 类型=b.name, 占用字节数=a.length, 长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'), 小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), 允许空=case when a.isnullable=1 then '√'else '' end, 默认值=isnull(e.text,''), 字段说明=isnull(g.[value],''), 索引名称=isnull(h.索引名称,''), 索引顺序=isnull(h.排序,'') FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id&& and d.xtype='U' and d.status&=0 left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid&& left join sysproperties f on d.id=f.id and f.smallid=0 left join(--这部分是索引信息,如果要显示索引与表及字段的对应关系,可以只要此部分 select 索引名称=a.name,c.id,d.colid ,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending') when 1 then '降序' when 0 then '升序' end from sysindexes a join sysindexkeys b on a.id=b.id and a.indid=b.indid join (--这里的作用是有多个索引时,取索引号最小的那个 select id,colid,indid=min(indid) from sysindexkeys group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid join sysobjects c on b.id=c.id and c.xtype='U' and c.status&=0 join syscolumns d on b.id=d.id and b.colid=d.colid where a.indid not in(0,255) ) h on a.id=h.id and a.colid=h.colid --where d.name='要查询的表'&&&& --如果只查询指定表,加上此条件 order by a.id,a.colorder
--索引信息
--索引信息 select 索引名称=case when b.keyno=1 then a.name else '' end ,表名=case when b.keyno=1 then c.name else '' end ,列名=d.name ,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending') when 1 then '降序' when 0 then '升序' end ,聚集=INDEXPROPERTY(c.id,a.name,'IsClustered') ,唯一=case INDEXPROPERTY(c.id,a.name,'IsUnique') when 0 then '非唯一' when 1 then case when e.id is null then '唯一索引' else '唯一约束' end end ,e.name ,填充因子=a.OrigFillFactor from sysindexes a join sysindexkeys b on a.id=b.id and a.indid=b.indid --join (--这里的作用是有多个索引时,取索引号最小的那个 --select id,colid,indid=min(indid) from sysindexkeys --group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid join sysobjects c on b.id=c.id and c.xtype='U' and c.status&=0 join syscolumns d on b.id=d.id and b.colid=d.colid left join sysobjects e on b.indid=e.id and e.xtype='UQ' where a.indid not in(0,255) order by c.name,a.name
找出表中某一列相同的数据行 select *from table where (column in(select column from table group ny column having count(*)&1)
找出表中某一列相同的数据行 select *from table where (column in(select column from table group by column having count(*)&1)
刚才BY写错拉! --1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值, --显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd。 select emp_no ,emp_name ,dept , &&&&&&& isnull(convert(char(10),birthday,120),'日期不详') birthday from employee order by dept
--2、查找与喻自强在同一个单位的员工姓名、性别、部门和职称 select emp_no,emp_name,dept,title from employee where emp_name&&'喻自强' and dept in &&& (select dept from employee &&&& where emp_name='喻自强')
--3、按部门进行汇总,统计每个部门的总工资 select dept,sum(salary) from employee group by dept
--4、查找商品名称为14寸显示器商品的销售情况, --显示该商品的编号、销售数量、单价和金额 select a.prod_id,qty,unit_price,unit_price*qty totprice from sale_item a,product b where a.prod_id=b.prod_id and prod_name='14寸显示器'
--5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额 select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice from sale_item group by prod_id
--6、使用convert函数按客户编号统计每个客户1996年的订单总金额 select cust_id,sum(tot_amt) totprice from sales where convert(char(4),order_date,120)='1996' group by cust_id
--7、查找有销售记录的客户编号、名称和订单总额 select a.cust_id,cust_name,sum(tot_amt) totprice from customer a,sales b where a.cust_id=b.cust_id group by a.cust_id,cust_name
--8、查找在1997年中有销售记录的客户编号、名称和订单总额 select a.cust_id,cust_name,sum(tot_amt) totprice from customer a,sales b where a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997' group by a.cust_id,cust_name
--9、查找一次销售最大的销售记录 select order_no,cust_id,sale_id,tot_amt from sales where tot_amt= &&& (select max(tot_amt) &&&& from sales)
--10、查找至少有3次销售的业务员名单和销售日期 select emp_name,order_date from employee a,sales b
where emp_no=sale_id and a.emp_no in && (select sale_id &&& from sales &&& group by sale_id &&& having count(*)&=3) order by emp_name
--11、用存在量词查找没有订货记录的客户名称 select cust_name from customer a where not exists &&& (select * &&&& from sales b &&&& where a.cust_id=b.cust_id)
--12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额 --订货日期不要显示时间,日期格式为yyyy-mm-dd --按客户编号排序,同一客户再按订单降序排序输出 select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt from customer a left outer join sales b on a.cust_id=b.cust_id order by a.cust_id,tot_amt desc
--13、查找16M DRAM的销售情况,要求显示相应的销售员的姓名、 --性别,销售日期、销售数量和金额,其中性别用男、女表示 select emp_name 姓名, 性别= case a.sex&& when 'm' then '男' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& when 'f' then '女'
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else '未' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& end, &&&&&&&& 销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'), &&&&&&&& qty 数量, qty*unit_price as 金额 from employee a, sales b, sale_item c,product d where d.prod_name='16M DRAM' and d.pro_id=c.prod_id and &&&&&& a.emp_no=b.sale_id and b.order_no=c.order_no
--14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、 --产品名称、数量、单价、金额和销售日期 select emp_no 编号,emp_name 姓名, 性别= case a.sex when 'm' then '男' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& when 'f' then '女'
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else '未' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& end, &&&&&& prod_name 产品名称,销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'), &&&&&& qty 数量, qty*unit_price as 金额 from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d where d.pro_id=c.prod_id and b.order_no=c.order_no
--15、查找销售金额最大的客户名称和总货款 select cust_name,d.cust_sum from&&& customer a, &&&&&&& (select cust_id,cust_sum &&&&&&&& from (select cust_id, sum(tot_amt) as cust_sum &&&&&&&&&&&&&& from sales &&&&&&&&&&&&&& group by cust_id ) b &&&&&&&& where b.cust_sum =
&&&&&&&&&&&&&&& ( select max(cust_sum) &&&&&&&&&&&&&&&&& from (select cust_id, sum(tot_amt) as cust_sum &&&&&&&&&&&&&&&&&&&&&&& from sales &&&&&&&&&&&&&&&&&&&&&&& group by cust_id ) c ) &&&&&&&& ) d where a.cust_id=d.cust_id
--16、查找销售总额少于1000元的销售员编号、姓名和销售额 select emp_no,emp_name,d.sale_sum from&&& employee a, &&&&&&& (select sale_id,sale_sum &&&&&&&& from (select sale_id, sum(tot_amt) as sale_sum &&&&&&&&&&&&&& from sales &&&&&&&&&&&&&& group by sale_id ) b &&&&&&&& where b.sale_sum &1000&&&&&&&&&&&&&&& &&&&&&&& ) d where a.emp_no=d.sale_id
--17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额 select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price from customer a, product b, sales c, sale_item d where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
&&&&&& c.order_no=d.order_no and a.cust_id in ( &&&&&& select cust_id &&&&&& from&& (select cust_id,count(distinct prod_id) prodid &&&&&&&&&&&&& from (select cust_id,prod_id &&&&&&&&&&&&&&&&&&& from sales e,sale_item f &&&&&&&&&&&&&&&&&&& where e.order_no=f.order_no) g &&&&&&&&&&&&& group by cust_id &&&&&&&&&&&&& having count(distinct prod_id)&=3) h )
--18、查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数量和金额 select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price from customer a, product b, sales c, sale_item d where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
&&&&&& c.order_no=d.order_no&& and not exists && (select f.* &&& from customer x ,sales e, sale_item f &&& where cust_name='世界技术开发公司' and x.cust_id=e.cust_id and &&&&&&&&& e.order_no=f.order_no and not exists &&&&&&&&&&& ( select g.* &&&&&&&&&&&&& from sale_item g, sales&& h &&&&&&&&&&&&& where g.prod_id = f.prod_id and g.order_no=h.order_no and &&&&&&&&&&&&&&&&&&& h.cust_id=a.cust_id) &&&& ) &&& 19、查找表中所有姓刘的职工的工号,部门,薪水 select emp_no,emp_name,dept,salary from employee where emp_name like '刘%'
20、查找所有定单金额高于20000的所有客户编号 select cust_id from sales where tot_amt&20000
21、统计表中员工的薪水在之间的人数 select count(*)as 人数 from employee where salary between 40000 and 60000
22、查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工 select avg(salary) avg_sal,dept
from employee
where addr like '上海市%' group by dept
23、将表中住址为&上海市&的员工住址改为&北京市& update employee&& set addr like '北京市' where addr like '上海市'
24、查找业务部或会计部的女员工的基本信息。 select emp_no,emp_name,dept from employee
where sex='F'and dept in ('业务','会计')
25、显示每种产品的销售金额总和,并依销售金额由大到小输出。 select prod_id ,sum(qty*unit_price) from sale_item
group by prod_id order by sum(qty*unit_price) desc 26、选取编号界于‘C0001’和‘C0004’的客户编号、客户名称、客户地址。 select CUST_ID,cust_name,addr from customer
where cust_id between 'C0001' AND 'C0004'
27、计算出一共销售了几种产品。 select count(distinct prod_id) as '共销售产品数' from sale_item
28、将业务部员工的薪水上调3%。 update employee set salary=salary*1.03 where dept='业务' &&&& 29、由employee表中查找出薪水最低的员工信息。 select * from employee where salary= &&&&&&& (select min(salary ) &&&&&&&& from employee )
30、使用join查询客户姓名为&客户丙&所购货物的&客户名称&,&定单金额&,&定货日期&,&电话号码& select a.cust_id,b.tot_amt,b.order_date,a.tel_no from customer a join sales b on a.cust_id=b.cust_id and cust_name like '客户丙'
31、由sales表中查找出订单金额大于“E0013业务员在这天所接每一张订单的金额”的所有订单。 select * from sales where tot_amt&all &&&&&&& (select tot_amt
&&&&&&&& from sales
&&&&&&&& where sale_id='E0013'and order_date='') order by tot_amt
32、计算'P0001'产品的平均销售单价 select avg(unit_price) from sale_item where prod_id='P0001'
33、找出公司女员工所接的定单 select sale_id,tot_amt from sales where sale_id in
(select sale_id from employee where sex='F')
34、找出同一天进入公司服务的员工 select a.emp_no,a.emp_name,a.date_hired from employee a join employee b on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired) order by a.date_hired
35、找出目前业绩超过232000元的员工编号和姓名。 select emp_no,emp_name from employee
where emp_no in (select sale_id from sales
group by sale_id having sum(tot_amt)&232000)
原文链接:
共有0个回答
更多开发者职位上
有什么技术问题吗?
长平狐的其它问题
类似的话题}

我要回帖

更多关于 忻州市环境卫生协会 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信