number course score
1 C#     80
1  Java 60
1 SQL  100
2 C#  50
2 Java 30
2 SQL  70select查询number  C# Java SQL
1 80 60 100
2 50 30 70
上面是一张表 使用sql查询变成下面这种形式

解决方案 »

  1.   


    select number,
         max(case course when 'JAVA' then score else null end) [JAVA],
         ...
    from tb
    group by number
    行转列,楼主搜精华帖!
      

  2.   

    给个连接
    http://topic.csdn.net/u/20110822/22/d84cd6e9-d98e-4d88-8e5c-441015ac3126.html
      

  3.   

    select [number]  ,
      max(case course when 'C#'then score else 0 end) C# ,
      max(case course when 'Java' then score else 0 end) Java ,
      max(case course when 'SQL' then score else 0 end) SQL
    from tb
    group by [number]
      

  4.   


    select * from  data pivot (max([Score]) for [Course] in([C#],[JAVA],[SQL]))number
    麻烦解释一下pivot是一个神马意思诶
    谢了
      

  5.   


    select number,[c#],[java],[sql] from tb pivot( max(score) for course in (c#,java,sql)) as a  
     
      

  6.   


    2005以上新的函数 pivot去查下用法就知道了
      

  7.   

    还是比较喜欢 select
     [number]  ,
      max(case course when 'C#'then score else 0 end) C# ,
      max(case course when 'Java' then score else 0 end) Java ,
      max(case course when 'SQL' then score else 0 end) SQL
    from
     tb
    group by
     [number]
      

  8.   

    pivot是SQL 里的运算符,用于将列值旋转为列名(即行转列)
    pivot 的一般语法是:pivot (聚合函数(列) FOR 列 in (…) )AS 别名
      

  9.   

    SQL Server中行列转换 Pivot UnPivot 
    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN(<column_list>)) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现完整语法:table_sourceUNPIVOT(value_columnFOR pivot_columnIN(<column_list>)) 注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别
     在数据库属性->选项->兼容级别改为   90