使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UNPIVOT,则可以很容易的实现行列转换的需求. 在本文中我们将通过两个简单的例子详细讲解PIVOT和UNPIVOT的用法. PIVOT是行转列,用法如下: 假如表结构如下: id name quarter profile 1 a 1 10
/* 在实际使用sql工作中总会碰到将某一列的值放到标题中显示.就是总说的行列转换或者互换. 比如有如下数据: ID NAME KECHENG CHENGJI -- ---------- -------------------- ------- 1 a 语文 80 2 a 数学 70 3 b 语文 40 4 b 数学 100 5 c 语文 90 6 c 数学 92 那末我要求显示的结果是: NAME YUWEN SHUXUE ---------- ---------------------- -
行专列 Pivot 1)SQL 2000版本 静态 SELECT ID , SUM(CASE Code WHEN 'Item1' THEN Value END) AS Item1 , SUM(CASE Code WHEN 'Item2' THEN Value END) AS Item2 , SUM(CASE Code WHEN 'Item3' THEN Value END) AS Item3 FROM RowToCol GROUP BY ID --或者用max也行 SELECT ID , MAX