问题:表A(队员表),字段
     FNo varchar(20)    队员编号
    FName varchar(20)   队员名字
表B(比赛记录表),字段
     FDate    datetime        比赛时间          
     FANo     varchar(20)    队员A编号(与表A的FNo对应)
     FResult  varchar(20)    比赛结果
     FBNo     varchar(20)    队员B编号(与表A的FNo对应)每个队员既可能在FANo出现,也可能在FBNo出现,如何用语句统计出每个队员参加比赛的次数,不用游标可以不?

解决方案 »

  1.   

    select b.队员名字,a.次数
    from
    (
      select 队员编号,count(*) 次数
      (
         select 队员A编号 as 队员编号 from tbb
         union all 
         select 队员B编号 as 队员编号 from tbb
      ) m
      group by 队员编号
    ) a
    join tba b
      on a.队员编号=b.队员编号
      

  2.   


    declare table @t(FNo varchar(20))
    select FANO
    from B
    union
    select FBNO
    from Bselect FNO,count(FNO) as cishu
    from @t
    group by FNO兄弟,这个我保证正确,只不过是简化了点,剩下的自己添加上。可以结贴,给我分了,呵呵。
      

  3.   


    --tryselect a.fno,a.fname,sum(acount) as acount
    (
    (select a.fno,a.fname ,acount =(select count(fano) from b where fno = a.fano as acount ) from a 
    union all
    select a.fno,a.fname ,acount =(select count(fbno) from b where fno = a.fbno as acount ) from a 
    )
    )a
    group by a.fno,a.fname