----------------------------------------------------------------------------------
-- 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())+'[email protected]+'-1)%'[email protected]+'+1,*,
rn2=(ROW_NUMBER()OVER(ORDER BY GETDATE())+'[email protected]+'-1)/'[email protected]+'
FROM tb
)
SELECT '[email protected]+'
FROM t
PIVOT (MAX(a) FOR rn IN('[email protected]+'))b
')
本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/htl258/archive/2010/07/06/5717054.aspx