解析SQL Server中行转列问题

2008-04-02 10:38:05来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  行转列问题主要分为两类。

  1)简单的行转列问题:

  示例表:

  id sid course result

  1 2005001 语文 80.0

  2 2005001 数学 90.0

  3 2005001 英语 80.0

  4 2005002 语文 56.0

  5 2005002 数学 69.0

  6 2005002 英语 89.0

  执行:

  select sid,语文=isnull(sum(case course when '语文' then result end),0),
  数学=isnull(sum(case course when '数学' then result end),0),
  英语=isnull(sum(case course when '英语' then result end),0)
  from result
  group by sid
  order by sid

  得出结果:

  sid 语文 数学 英语

  2005001 80.0 90.0 80.0

  2005002 56.0 69.0 89.0

  2)较为复杂的行转列

  表1:course

  id name

  1 语文

  2 数学

  3 英语

  表2:result

  id sid course result

  1 2005001 语文 80.0

  2 2005001 数学 90.0

  3 2005001 英语 80.0

  4 2005002 语文 56.0

  5 2005002 数学 69.0

  6 2005002 英语 89.0

 declare @sql varchar(8000)
  set @sql='select sid'
  select @sql=@sql ',' course.name '=isnull(sum(case course when ''' course.name ''' then result end),0)'
  from course order by id
  set @sql=@sql ' from result group by sid order by sid'
  print @sql
  exec(@sql)

  得出结果

  sid 语文 数学 英语

  2005001 80.0 90.0 80.0

  2005002 56.0 69.0 89.0


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 如何解决SQL Server 2005无法重装问题

下一篇: 浅谈查询优化器中的JOIN算法