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
请前辈们帮帮忙!!

解决方案 »

  1.   

    create procedure
    @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 是这样?
      

  2.   

    select h.医院id,u.userid,h.time,h.money from User u join
    hospital h on
    u.hospitalId=h.hospitalId
      

  3.   

    order by hospitalId,userid,time 吧?
      

  4.   


    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
      

  5.   

    医院id  负责人id    时间点          医院的利润 
    1        nick        2009-1-1        100000 
    1        nick        2009-1-2        130000 
    2        kevin      2009-1-3        25000根据一个用户的ID怎么会是这样的结果呢?结果中负责人ID应该都是一样的才对吧?
      

  6.   

    --看不到负责人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
      

  7.   

    select a.hospitalId as 医院id,userid as 负责人id,time as 时间点,
    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
      

  8.   


    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
      

  9.   

    晕倒 还有个细节用户表中的endTime要是空的话  该怎么办 啊??
    enTime为空 就代表该用户负责某家医院一直到现在,意思就是 没有结束时间