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查询出每个邮件的发送者姓名、邮件标题、接受者姓名。
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 题2
使用唯一标识UNIQUEIDENTIFIER标识
create table guaihao(ID UNIQUEIDENTIFIER,date datetime)
每次挂号都将插入一条记录 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 题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
---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 好复杂
页:
[1]
