2014-02-21 41 views
0

我有一张桌上有足球队的比分。这些分数(百分比)已按照玩家每周的星期排序。时间戳已经转换,现在有倍数得分每周一名球员如下:SQL Server:组,按列创建列和排序

Week  Player  Score 
    2013w51  Louis   12 
    2013w51  Miguel  76 
    2013w51  Miguel  21 
    2013w51  Charles  62 
    2013w52  Pedro   21 
    2013w52  Rodriguo  62 
    .   .   . 
    .   .   . 
    .   .   . 
    2014w2  Louis   52 
    2014w2  Louis   85 
    2014w2  Charles  65 

我想通过玩家每周和每名球员(总计)的平均分如下排序(考虑到周固定9周):

Player  2013w51 2013w52 2014w1 2014w2 ... 
    Louis   14  58  62  68.5 ... 
    Miguel   48.5  62  48  66 ... 
    Charles  65  12  89  56 ... 
    Pedro   82  85  54  76 ... 
    Rodriguo  16  56  76  29 ... 

感谢您的热心帮助

TDEV

编辑:

我使用PIVOT功能如下。

SELECT * 
     FROM 
     (SELECT [Player], [Week], [Score] 
      FROM Temp_Db) AS SourceTable 
     PIVOT 
     (
      AVG([Average]) 
      FOR [Week] IN ([2013w51], [2013w52], [2014w1], [2014w2]) 
     ) AS PivotTable; 
+0

您应该在应用程序级别执行此操作... – Justin

回答

0

我用PIVOT功能如下。

SELECT * 
    FROM 
    (SELECT [Player], [Week], [Score] 
     FROM Temp_Db) AS SourceTable 
    PIVOT 
    (
     AVG([Average]) 
     FOR [Week] IN ([2013w51], [2013w52], [2014w1], [2014w2]) 
    ) AS PivotTable; 
0

申报@T表(week1 VARCHAR(50),玩家VARCHAR(50),得分INT)

插入到@T值( '2013w51', '路易',12)

INSERT INTO @T值( '2013w51', '路易',50)

插入到@T值( '2013w51', '路易',13)

插入到@T值( '2013w5' ,'Pedro',22)

插入到@T值( '2013w51', '路易',50)

插入到@T值( '2013w5', '佩德罗',13)

选择week1,播放器,AVG(从@T

组分数)作为COLVALUE由week1,玩家

+0

谢谢您的回复,但我没有很好地解释我的问题。我找到了解决方案(在OP中编辑) – Tdev

+0

@ Tdev ..欢迎.. –