数据库环境:SQL SERVER 2005
最近在整理数据时,要将查询到的数据张贴到Excel中。在Excel中,要展示的行数是固定的,列数不固定,
一个一个数据的复制张贴太烦人。想了一个偷懒的方法,直接将查询的数据进行行转列,达到和Excel中的效果一致,
再整列复制到Excel中。
1.创建测试表,导入测试数据
/*从系统表sysobjects取出name字段的42行数据,用作测试数据*/WITH x0 AS ( SELECT TOP 42 name FROM sysobjects ),/*产生序号*/ x1 AS ( SELECT ROW_NUMBER() OVER ( ORDER BY name ) AS rn , name FROM x0 ),/*生成组号*/ x2 AS ( SELECT ( rn - 1 ) / 5 AS gp ,--不固定列数 rn % 5 AS col ,--分5列 rn , name FROM x1 ) SELECT * INTO #t FROM x2View Code
2.固定列数行转列实现
在测试数据里,我们已经将数据分了固定5个组。因此,可以通过行转列将数据分成5列显示。
SELECT *FROM ( SELECT gp , col , name FROM #t ) AS t1 PIVOT( MAX(name) FOR col IN ( [0], [1], [2], [3], [4] ) ) AS t2View Code
看一下已知列数的分组结果
新闻热点
疑难解答