您现在的位置:软界网技术中心数据库SQLServer > 技术显示
SQL Server中行转列问题的终极解决
2007-10-19 10:01:00   网友评论       阅读次数 点此评论
   

  本文将向大家介绍 SQL Server 中行转列问题的终极解决方案,主要应用case语句来解决行转列的问题,下面就一起来看看。

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

  1)简单的行转列问题:

  示例表:

  idsidcourse 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

  执行:

以下是引用片段:
  selectsid,语文=isnull(sum(casecoursewhen'语文'thenresultend),0),
  数学=isnull(sum(casecoursewhen'数学'thenresultend),0),
  英语=isnull(sum(casecoursewhen'英语'thenresultend),0)
  fromresult
  groupbysid
  orderbysid

  得出结果:

  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

  idsid 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@sqlvarchar(8000)
  set@sql='selectsid'
  select@sql=@sql+','+course.name+'=isnull(sum(casecoursewhen'''+course.name+'''thenresultend),0)'
  fromcourseorderbyid
  set@sql=@sql+'fromresultgroupbysidorderbysid'
  print@sql
  exec(@sql)

  得出结果

  sid 语文 数学 英语

  2005001 80.0 90.0 80.0

  2005002 56.0 69.0 89.0

  点击查看原文>>

欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml    
 
      来源: 作者:
 
【评论查看】