|
本文将向大家介绍 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 点击查看原文>>
|