原文地址:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html

 行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的 SELECT...CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。

我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 

[转载]SQL行转列,列转行
CREATE  TABLE [StudentScores]
(
    
[UserName]         NVARCHAR(20),        --学生姓名
    [Subject]          NVARCHAR(30),        --科目
    [Score]            FLOAT,               --成绩
)

INSERT INTO [StudentScores] SELECT 'Nick''语文'80

INSERT INTO [StudentScores] SELECT 'Nick''数学'90

INSERT INTO [StudentScores] SELECT 'Nick''英语'70

INSERT INTO [StudentScores] SELECT 'Nick''生物'85

INSERT INTO [StudentScores] SELECT 'Kent''语文'80

INSERT INTO [StudentScores] SELECT 'Kent''数学'90

INSERT INTO [StudentScores] SELECT 'Kent''英语'70

INSERT INTO [StudentScores] SELECT 'Kent''生物'85
[转载]SQL行转列,列转行

相关文章: