学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

3道笔试的题,来做一下

3道笔试的题,来做一下

1.已知两个日期2005-10-29和2005-11-01要求生成两个日期之间的所有日期,生成结果如下:
2005-10-29
2005-10-30
2005-10-31
2005-11-01
2.在某大型医院中,由于业务量很大,必须启用了20台客户机为患者挂号。在为每个人挂号时,必须为每次挂号生成唯一的挂号ID,请问:你将在SQLSever中如何设计实现挂号ID的生成(ID需要返回客户机)
3.A表
定义      代码         类型
发送者     SenderID     INT
邮件标题   MailTile     CHAR(100)
接受者     ReceiveID    INT
其中       SenderID ReceiveID 为表B的外键,表B如下
定义      代码           类型
代码     ID              INT
姓名      Name           CHAR(50)
请用一巨SQL查询出每个邮件的发送者姓名、邮件标题、接受者姓名。

TOP

题1
declare @starttime datetime
declare @endtime datetime
select @starttime='2005/10/29'
select @endtime='2005/11/01'
while(@starttime<=@endtime)
begin
print convert(char(10),@starttime,120)
select @starttime=@starttime+1
end

TOP

题2
使用唯一标识UNIQUEIDENTIFIER标识
create table guaihao(ID UNIQUEIDENTIFIER,date datetime)
每次挂号都将插入一条记录

TOP

1.已知两个日期2005-10-29和2005-11-01要求生成两个日期之间的所有日期,生成结果如下:
2005-10-29
2005-10-30
2005-10-31
2005-11-01

两个解决方案.
2000
先成成一个临时表.
select top 365 dy=identity(int,1,1) into # from syscolumns a,syscolumns b
再加
select dateadd(day,dy,'2005-10-29') date
from # where dateadd(day,dy,'2005-10-29')<='2005-11-01'

2005可以使用CTE
with tmpCTE as
(
  select convert(datetime,'2005-10-29') as date
  union all
  select dateadd(day,1,date)
  from tmpCTE
  where dateadd(day,1,date)<='2005-11-01'
)
select * from tmpCTE

2.在某大型医院中,由于业务量很大,必须启用了20台客户机为患者挂号。在为每个人挂号时,必须为每次挂号生成唯一的挂号ID,请问:你将在SQLSever中如何设计实现挂号ID的生成(ID需要返回客户机)
...这个..可以添加一个挂号表..然后使用事务的方式新增.

3.A表
定义      代码         类型
发送者     SenderID     INT
邮件标题   MailTile     CHAR(100)
接受者     ReceiveID    INT
其中       SenderID ReceiveID 为表B的外键,表B如下
定义      代码           类型
代码     ID              INT
姓名      Name           CHAR(50)
请用一巨SQL查询出每个邮件的发送者姓名、邮件标题、接受者姓名。

select a.name,b.mailtitle,c.name
from 表A b
left join 表B a
on b.senderID=a.ID
left join 表B c
on b.receiveID=c.id
我的msn: myfend@hotmail.com

TOP

题3

create table AA
(SenderID INT,
MailTile     CHAR(100),
ReceiveID    INT
)

create table BB
(ID              INT,
Name           CHAR(50)
)

select send.Name,send.MailTile,BB.Name from
(select BB.Name as Name,AA.MailTile as MailTile,AA.ReceiveID as ReceiveID from AA,BB
where AA.SenderID=BB.ID) as send,BB
where send.ReceiveID=BB.ID

TOP

---1.

declare @tb table (dt datetime)
declare @bgntime datetime
declare @endtime datetime
set @bgntime='2005-10-29'
set @endtime='2005-11-29'

while @bgntime<=@endtime
begin
   insert @tb select @bgntime
   set @bgntime = dateadd(day,1,@bgntime)
end

select * from @tb

TOP

好复杂

TOP

发新话题