1、 from salary s1;2、下面是表FACTORY,字段是per_date(生产日期),per_output(生产产量),请参看下面需求:Per_date per_output20080101 10020080102 20020080103 30020080104 400当前是20080101时,产量100吨20080102时,产量100+200=300吨20080103时,产量100+200+300=600吨20080104时,产量100+200+300+400=1000吨,请用SQL语句实现该功能?select per_date,(select sum(per_output) fr
2、om FACTORY where per_dateb then a else b end ),(case when bc then b esle c end)from table_name6、面试题:一个日期判断的sql语句?请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)select * from tb where datediff(dd,SendTime,getdate()=07、有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三
3、条记录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 显示格式: 语文 数学 英语 及格 优秀 不及格 select(case when 语文=80 then 优秀 when 语文=60 then 及格else 不及格) as 语文,(case when 数学 when 数学) as 数学,(case when 英语 when 英语) as 英语,from table8、在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?用户临时表
4、:create table #xx(ID int, IDValues int)系统临时表:create table #xx(ID int, IDValues int)区别:用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.当创建它的进程消失时这个临时表就自动删除.全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.9、sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Serve
5、r的存储容量是可以扩大的.SQL Server 2000 数据库有三种类型的文件:主要数据文件主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。次要数据文件次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。日志文件日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。10、请用一个sql语句得出结果从table1,table2中取出如t
6、able3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。如使用存储过程也可以。table1月份mon 部门dep 业绩yj-一月份 01 10一月份 02 10一月份 03 5二月份 02 8二月份 04 9三月份 03 8table2部门dep 部门名称dname- 01 国内业务一部 02 国内业务二部 03 国内业务三部 04 国际业务部table3 (result)部门dep 一月份 二月份 三月份- 01 10 null null 02 10 8 null 03 null 5 8 04 null null 91)select a.部门名称dname,b.业绩y
7、j as 一月份,c.业绩yj as 二月份,d.业绩yj as 三月份from table1 a,table2 b,table2 c,table2 dwhere a.部门dep = b.部门dep and b.月份mon = anda.部门dep = c.部门dep and c.月份mon = a.部门dep = d.部门dep and d.月份mon = 2)select a.dep,sum(case when b.mon=1 then b.yj else 0 end) as ,sum(case when b.mon=2 then b.yj else 0 end) as sum(case
8、when b.mon=3 then b.yj else 0 end) as sum(case when b.mon=4 then b.yj else 0 end) as 四月份sum(case when b.mon=5 then b.yj else 0 end) as 五月份sum(case when b.mon=6 then b.yj else 0 end) as 六月份sum(case when b.mon=7 then b.yj else 0 end) as 七月份sum(case when b.mon=8 then b.yj else 0 end) as 八月份sum(case whe
9、n b.mon=9 then b.yj else 0 end) as 九月份sum(case when b.mon=10 then b.yj else 0 end) as 十月份sum(case when b.mon=11 then b.yj else 0 end) as 十一月份sum(case when b.mon=12 then b.yj else 0 end) as 十二月份from table2 a left join table1 b on a.dep=b.dep11、华为一道面试题一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。select id,
10、Count(*) from tb group by id having count(*)1select * from(select count(ID) as count from table group by ID)T where T.count12、表结构以及数据如下:CREATE TABLE 表 (ID int, 日期 varchar(11), 单据 char(3)INSERT INTO 表 (ID , 日期 , 单据 ) VALUES ( 1 , 2004-08-02 , 001 );INSERT INTO 表 (ID , 日期 , 单据 ) VALUES ( 2 , 2004-09-0
11、2INSERT INTO 表 (ID , 日期 , 单据 ) VALUES ( 3 , 2004-10-02002INSERT INTO 表 (ID , 日期 , 单据 ) VALUES ( 4 , 要求:设计一个查询,返回结果如下:ID 日期 单据- - -1 2004-08-02 0014 2004-09-02 002即对于每个单据号,返回日期最小的行。-解答:-相关子查询select a.* from 表 awhere 日期=(select min(日期) from 表 where 单据=a.单据)-用JOIN的连接select a.* from 表 a,(select min(日期)
12、日期,单据 from 表 group by 单据) bwhere a.单据=b.单据 and a.日期=b.日期-不用JOIN的连接select a.* from 表 a JOIN ON a.单据=b.单据 and a.日期=b.日期-用谓词Existsselect * from 表 awhere not exists(select 1 from 表 where 单据=a.单据 and 日期a.日期) 但我感觉这种方法并不是最简单的,后来把这个方法发给面试的人,他给我了一种更简单方法,只要用基本的Sql语句就可以实现。代码如下select a.id,a.mark fromselect page
13、.id,100 as mark from page where page.url like unionselect page.id,50 as mark from page where page.title like select page.id,10 as mark from page where page.body like ) as a order by mark desc 13、用union 实现联合查询,在每个查询语句中定义一个临时变量mark 并给mark赋值,在最后的输出时采用mark来排序,这样实现,非常简单,我感觉这题更多考研我们的编程思想。14、一道sql面试题解法 id strvalue type1 how 12 are 13 you 14 fine 25 thank 26 you 2要求用sql把它们搜索出来成为这样的#how are you#fine thank you#解答:select (select #+replace( replace(SELECT strvalue FROM tb_test t where type = 1 FOR XML AUTO), +(select replace(replace(SELECT strvalue FROM tb_test t where type = 2 FOR XML AUTO),),)+
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1