User表
----------------------------
userid 用户ID
beginTime 负责某家医院的起始时间
endTime 负责某家医院的结束时间
hospitalId 用户负责医院的id (和hospital表的hospitalId是主外键关系)hospital表 (hospital表描述了 某医院在某一天的销售利润)
-----------------------------
hospitalId 医院id
time 时间点(指某一天)
money 医院的利润--------------------------------------------------
我现在想这样统计,根据一个人的id,统计他的业绩,尽量用一个存储过程(只需要一个用户的ID作为参数)统计成以下的结果医院id 负责人id 时间点 医院的利润
1 nick 2009-1-1 100000
1 nick 2009-1-2 130000
2 kevin 2009-1-3 25000
请前辈们帮帮忙!!
----------------------------
userid 用户ID
beginTime 负责某家医院的起始时间
endTime 负责某家医院的结束时间
hospitalId 用户负责医院的id (和hospital表的hospitalId是主外键关系)hospital表 (hospital表描述了 某医院在某一天的销售利润)
-----------------------------
hospitalId 医院id
time 时间点(指某一天)
money 医院的利润--------------------------------------------------
我现在想这样统计,根据一个人的id,统计他的业绩,尽量用一个存储过程(只需要一个用户的ID作为参数)统计成以下的结果医院id 负责人id 时间点 医院的利润
1 nick 2009-1-1 100000
1 nick 2009-1-2 130000
2 kevin 2009-1-3 25000
请前辈们帮帮忙!!
@userid int
as
begin
select U.userid,H.time,H.money
from user U
inner join hospital H on U.hospitalid = H.hospitalid
where userid =@userid
order by userid desc
end 是这样?
hospital h on
u.hospitalId=h.hospitalId
create proc getUserInfo
(
@UserName nvarchar(50)
)
as
select h.医院id,u.userid,h.time,h.money from [User] u join
hospital h on
u.hospitalId=h.hospitalId where userid=@UserName
1 nick 2009-1-1 100000
1 nick 2009-1-2 130000
2 kevin 2009-1-3 25000根据一个用户的ID怎么会是这样的结果呢?结果中负责人ID应该都是一样的才对吧?
--不考虑时间限制
create proc my_proc @userid int
as
begin
select m.hospitalId,m.time,m.money
from hospital m, User n
where m.hospitalId = n.hospitalId and n.userid = @userid
end--考虑时间限制
create proc my_proc @userid int
as
begin
select m.hospitalId,m.time,m.money
from hospital m, User n
where m.hospitalId = n.hospitalId and n.userid = @userid and m.time between n.beginTime and n.endTime
end
sum(money) as 医院利润
from User表 a inner join hospital表 b
on a.hospitalId=b.hospitalId
--and b.time between beginTime and endTime ---如果要求时间点在起始时间和结束时间之间的话
group by a.hospitalId,userid,time
order by a.hospitalId,userid,time
create proc getUserInfo
(
@UserName nvarchar(50)
)
as
select h.医院id,u.userid,h.time,h.money from [User] u join
hospital h on
u.hospitalId=h.hospitalId and h.time between u.beginTime and h.beginTime
where userid=@UserName
enTime为空 就代表该用户负责某家医院一直到现在,意思就是 没有结束时间