SQL 结果集分列显示实例

来源:互联网 发布:navicat 执行sql语句 编辑:程序博客网 时间:2024/06/05 21:16


----------------------------------------------------------------------------------

-- Author : htl258(Tony)

-- Date   : 2010-07-06 21:13:04

-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)

--          Jul  9 2008 14:43:34

--          Copyright (c) 1988-2008 Microsoft Corporation

--          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)

-- Blog   : http://blog.csdn.net/htl258

-- Subject: SQL 结果集分列显示实例

----------------------------------------------------------------------------------

--> 生成测试数据表: [tb]

IF OBJECT_ID('[tb]') IS NOT NULL

    DROP TABLE [tb]

GO

CREATE TABLE [tb] ([A] [nvarchar](10))

INSERT INTO [tb]

SELECT 'aa' UNION ALL

SELECT 'bb' UNION ALL

SELECT 'cc' UNION ALL

SELECT 'dd' UNION ALL

SELECT 'ee' UNION ALL

SELECT 'ff' UNION ALL

SELECT 'gg' UNION ALL

SELECT 'hh' UNION ALL

SELECT 'ii' UNION ALL

SELECT 'jj' UNION ALL

SELECT 'kk' UNION ALL

SELECT 'll'

 

-->SQL查询如下:

--SQL2005

DECLARE @i INT

SET @i=4      --结果集显示的列数

DECLARE @cols VARCHAR(1000)

SELECT @cols=ISNULL(@cols+',','')+QUOTENAME(number+1)

FROM master..spt_values

WHERE TYPE='p' AND number<@i

EXEC('

    WITH t AS

    (

       SELECT rn=(ROW_NUMBER()OVER(ORDER BY GETDATE())+'+@i+'-1)%'+@i+'+1,*,

           rn2=(ROW_NUMBER()OVER(ORDER BY GETDATE())+'+@i+'-1)/'+@i+'

       FROM tb

    )

    SELECT '+@cols+'

    FROM t

       PIVOT (MAX(a) FOR rn IN('+@cols+'))b

')

/*

1          2          3          4

---------- ---------- ---------- ----------

aa         bb         cc         dd

ee         ff         gg         hh

ii         jj         kk         ll

 

(3 行受影响)

*/

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2010/07/06/5717054.aspx

原创粉丝点击