第一个表没用,以下两表即可.表名:VsTime 
VsID StarTime EndTime 
1 2008-4-29 2008-4-29 
2 2008-4-28 2008-4-28 
3 2008-4-27 2008-4-27 表名:VsResult 
ID VsID VsWinArea VsName WinScore 
1 1 龙争 张三 1 
2 1 虎斗 李四 3 
3 2 凤舞 王五 5 
4 2 九天 赵六 0 
5 3 龙争 张三 4 
6 3 九天 赵六 0 

解决方案 »

  1.   

    create table VsTime(VsID int,StarTime datetime,EndTime datetime )
    insert into VsTime values(1 ,'2008-4-29' ,'2008-4-29')  
    insert into VsTime values(2 ,'2008-4-28' ,'2008-4-28')  
    insert into VsTime values(3 ,'2008-4-27' ,'2008-4-27') 
    create table VsResult (ID int,VsID int,VsWinArea varchar(10) , VsName varchar(10) , WinScore int )
    insert into VsResult values(1 ,1 ,'龙争' ,'张三' ,1 ) 
    insert into VsResult values(2 ,1 ,'虎斗' ,'李四' ,3 ) 
    insert into VsResult values(3 ,2 ,'凤舞' ,'王五' ,5 )
    insert into VsResult values(4 ,2 ,'九天' ,'赵六' ,0 )
    insert into VsResult values(5 ,3 ,'龙争' ,'张三' ,4 ) 
    insert into VsResult values(6 ,3 ,'九天' ,'赵六' ,0 ) 
    goselect vsid,
      max(case px when 1 then convert(varchar(10),StarTime,120) else '' end) starttime , 
      max(case px when 1 then VsWinArea else '' end) VsWinArea , 
      max(case px when 1 then VsName else '' end) VsName , 
      'vs' vs ,
      max(case px when 2 then VsWinArea else '' end) VsWinArea , 
      max(case px when 2 then VsName else '' end) VsName , 
      max(case px when 1 then WinScore else 0 end) WinScore , 
      max(case px when 2 then WinScore else 0 end) WinScore
    from
    (
    select n.* , px = (select count(*) from 
    (
      select a.StarTime , b.* from VsTime a,VsResult b where a.vsid = b.vsid
    ) m where vsid = n.vsid and id < n.id ) + 1
    from
    (
      select a.StarTime , b.* from VsTime a,VsResult b where a.vsid = b.vsid
    ) n
    ) p
    group by vsiddrop table VsTime,VsResult/*
    vsid        starttime  VsWinArea  VsName     vs   VsWinArea  VsName     WinScore    WinScore    
    ----------- ---------- ---------- ---------- ---- ---------- ---------- ----------- ----------- 
    1           2008-04-29 龙争         张三         vs   虎斗         李四         1           3
    2           2008-04-28 凤舞         王五         vs   九天         赵六         5           0
    3           2008-04-27 龙争         张三         vs   九天         赵六         4           0(所影响的行数为 3 行)
    */
      

  2.   

    修改乌龟的代码
    create table VsTime(VsID int,StarTime datetime,EndTime datetime )
    insert into VsTime values(1 ,'2008-4-29' ,'2008-4-29')  
    insert into VsTime values(2 ,'2008-4-28' ,'2008-4-28')  
    insert into VsTime values(3 ,'2008-4-27' ,'2008-4-27') 
    create table VsResult (ID int,VsID int,VsWinArea varchar(10) , VsName varchar(10) , WinScore int )
    insert into VsResult values(1 ,1 ,'龙争' ,'张三' ,1 ) 
    insert into VsResult values(2 ,1 ,'虎斗' ,'李四' ,3 ) 
    insert into VsResult values(3 ,2 ,'凤舞' ,'王五' ,5 )
    insert into VsResult values(4 ,2 ,'九天' ,'赵六' ,0 )
    insert into VsResult values(5 ,3 ,'龙争' ,'张三' ,4 ) 
    insert into VsResult values(6 ,3 ,'九天' ,'赵六' ,0 ) 
    go
    select zzzz.starttime as N'【比赛时间】',
    zzzz.VsWinArea1+' '+ zzzz.VsName1+' VS ' +zzzz.VsWinArea2+ ' ' +zzzz.VsName2 as N'【(X组 姓名)VS  Y组 姓名】',
    rtrim(cast(zzzz.WinScore1 as char(10))) + ':' + rtrim(cast(zzzz.WinScore2 as char(10)))  as N'【战果】' 
     from (
    select vsid,
      max(case px when 1 then convert(varchar(10),StarTime,120) else '' end) starttime , 
      max(case px when 1 then VsWinArea else '' end) VsWinArea1 , 
      max(case px when 1 then VsName else '' end) VsName1 , 
      'vs' vs ,
      max(case px when 2 then VsWinArea else '' end) VsWinArea2 , 
      max(case px when 2 then VsName else '' end) VsName2 , 
      max(case px when 1 then WinScore else 0 end) WinScore1 , 
      max(case px when 2 then WinScore else 0 end) WinScore2
    from
    (
    select n.* , px = (select count(*) from 
    (
      select a.StarTime , b.* from VsTime a,VsResult b where a.vsid = b.vsid
    ) m where vsid = n.vsid and id < n.id ) + 1
    from
    (
      select a.StarTime , b.* from VsTime a,VsResult b where a.vsid = b.vsid
    ) n
    ) p
    group by vsid) as zzzzdrop table VsTime,VsResult【比赛时间】 【(X组 姓名)VS  Y组 姓名】 【战果】
    2008-04-29 龙争 张三 VS 虎斗 李四 1:3
    2008-04-28 凤舞 王五 VS 九天 赵六 5:0
    2008-04-27 龙争 张三 VS 九天 赵六 4:0
      

  3.   

    动态查询结果
    create table VsTime(VsID int,StarTime datetime,EndTime datetime )
    insert into VsTime values(1 ,'2008-4-29' ,'2008-4-29')  
    insert into VsTime values(2 ,'2008-4-28' ,'2008-4-28')  
    insert into VsTime values(3 ,'2008-4-27' ,'2008-4-27') 
    create table VsResult (ID int,VsID int,VsWinArea varchar(10) , VsName varchar(10) , WinScore int )
    insert into VsResult values(1 ,1 ,'龙争' ,'张三' ,1 ) 
    insert into VsResult values(2 ,1 ,'虎斗' ,'李四' ,3 ) 
    insert into VsResult values(3 ,2 ,'凤舞' ,'王五' ,5 )
    insert into VsResult values(4 ,2 ,'九天' ,'赵六' ,0 )
    insert into VsResult values(5 ,3 ,'龙争' ,'张三' ,4 ) 
    insert into VsResult values(6 ,3 ,'九天' ,'赵六' ,0 ) 
    goCreate FUNCTION vs(@ID int) 
    RETURNS nvarchar(500)
    AS  
    begin 
    declare @ii nvarchar(500)
    set @ii='' 
    select @ii=@ii+' VS '+VsWinArea+' '+VsName from VsResult where VsID=@ID
    if (@ii is null) 
    set @ii='' 
    else
    set @ii=right(@ii,len(@ii)-4)
        RETURN @ii 
    END Create FUNCTION 比分(@ID int) 
    RETURNS nvarchar(500)
    AS  
    begin 
    declare @ii nvarchar(500)
    set @ii='' 
    select @ii=@ii+' : '+rtrim(cast(WinScore as nvarchar(10))) from VsResult where VsID=@ID
    if (@ii is null) 
    set @ii='' 
    else
    set @ii=right(@ii,len(@ii)-3)
        RETURN @ii 
    END select StarTime as as N'【比赛时间】',dbo.vs(VsID) as N'【(X组 姓名)VS  Y组 姓名】',dbo.比分(VsID) as as N'【战果】' from VsTimedrop FUNCTION vs,比分
    drop table VsTime,VsResult
      

  4.   

    感谢各位大侠的帮助. 小弟还是有些不明白.
    表名:VsResult 
    ID VsID VsWinArea VsName WinScore 
    1 1 龙争 张三 1 
    2 1 虎斗 李四 3 
    3 2 凤舞 王五 5 
    4 2 九天 赵六 0 
    5 3 龙争 张三 4 
    6 3 九天 赵六 0 
    这张表里的数据vsid并不是一对一的..有可能数据结果如下:ID VsID VsWinArea VsName WinScore 
    1 1 龙争 张三 1 
    2 1 虎斗 李四 3 
    3 2 凤舞 王五 5 
    4 2 九天 赵六 0 
    5 3 龙争 张三 4 
    6 3 九天 赵六 0 
    7 3 九天 赵六 1 
    8 3 九天 赵六 3 
    9 2 凤舞 王五 5