CREATE TABLE [dbo].[table]( [filename] [varchar](10) NULL, [releasetime] [date] NULL, [releaseversion] [varchar](10) NULL ) ON [PRIMARY]GOINSERT INTO dbo.[table] ( filename , releasetime , releaseversion ) SELECT '文件1','2010-7-3 13:21:54','E1' UNION ALL SELECT '文件2','2010-8-3 13:21:54','E2' UNION ALL SELECT '文件2','2010-9-3 13:21:54','E3' UNION ALL SELECT '文件3','2010-8-3 13:21:54','E4' UNION ALL SELECT '文件3','2009-8-3 13:21:54','E5' UNION ALL SELECT '文件3','2008-8-3 13:21:54','E6'---------------------------------------------------------------------------------------------- filename releasetime releaseversion 文件1 2010-07-03 E1 文件2 2010-08-03 E2 文件2 2010-09-03 E3 文件3 2010-08-03 E4 文件3 2009-08-03 E5 文件3 2008-08-03 E6 ---------------------------------------------------------------------------------------------- SELECT filename , MAX(CASE tabtem1.no WHEN 1 THEN releasetime ELSE NULL END) AS 第一次发布日期 , MAX(CASE tabtem1.no WHEN 1 THEN releaseversion ELSE NULL END) AS 第一次发布版本 , MAX(CASE tabtem1.no WHEN 2 THEN releasetime ELSE NULL END) AS 二次发布日期 , MAX(CASE no WHEN 2 THEN releaseversion ELSE NULL END) AS 第二次发布版本 FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY FILENAME ORDER BY releasetime ) AS no FROM dbo.[table] ) tabtem1 GROUP BY tabtem1.filename ---------------------------------------------------------------------------------------------- filename 第一次发布日期 第一次发布版本 二次发布日期 第二次发布版本 文件1 2010-07-03 E1 NULL NULL 文件2 2010-08-03 E2 2010-09-03 E3 文件3 2008-08-03 E6 2009-08-03 E5 ----------------------------------------------------------------------------------------------
最后一句没写全 SELECT filename , MAX(CASE tabtem1.no WHEN 1 THEN releasetime ELSE NULL END) AS 第一次发布日期 , MAX(CASE tabtem1.no WHEN 1 THEN releaseversion ELSE NULL END) AS 第一次发布版本 , MAX(CASE tabtem1.no WHEN 2 THEN releasetime ELSE NULL END) AS 二次发布日期 , MAX(CASE no WHEN 2 THEN releaseversion ELSE NULL END) AS 第二次发布版本, MAX(CASE tabtem1.no WHEN 3 THEN releasetime ELSE NULL END) AS 三次发布日期 , MAX(CASE no WHEN 3 THEN releaseversion ELSE NULL END) AS 第三次发布版本 FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY FILENAME ORDER BY releasetime ) AS no FROM dbo.[table] ) tabtem1 GROUP BY tabtem1.filenamefilename 第一次发布日期 第一次发布版本 二次发布日期 第二次发布版本 三次发布日期 第三次发布版本 文件1 2010-07-03 E1 NULL NULL NULL NULL 文件2 2010-08-03 E2 2010-09-03 E3 NULL NULL 文件3 2008-08-03 E6 2009-08-03 E5 2010-08-03 E4
CREATE TABLE [dbo].[table](
[filename] [varchar](10) NULL,
[releasetime] [date] NULL,
[releaseversion] [varchar](10) NULL
) ON [PRIMARY]GOINSERT INTO dbo.[table]
( filename ,
releasetime ,
releaseversion
)
SELECT '文件1','2010-7-3 13:21:54','E1'
UNION ALL SELECT '文件2','2010-8-3 13:21:54','E2'
UNION ALL SELECT '文件2','2010-9-3 13:21:54','E3'
UNION ALL SELECT '文件3','2010-8-3 13:21:54','E4'
UNION ALL SELECT '文件3','2009-8-3 13:21:54','E5'
UNION ALL SELECT '文件3','2008-8-3 13:21:54','E6'----------------------------------------------------------------------------------------------
filename releasetime releaseversion
文件1 2010-07-03 E1
文件2 2010-08-03 E2
文件2 2010-09-03 E3
文件3 2010-08-03 E4
文件3 2009-08-03 E5
文件3 2008-08-03 E6
----------------------------------------------------------------------------------------------
SELECT filename ,
MAX(CASE tabtem1.no
WHEN 1 THEN releasetime
ELSE NULL
END) AS 第一次发布日期 ,
MAX(CASE tabtem1.no
WHEN 1 THEN releaseversion
ELSE NULL
END) AS 第一次发布版本 ,
MAX(CASE tabtem1.no
WHEN 2 THEN releasetime
ELSE NULL
END) AS 二次发布日期 ,
MAX(CASE no
WHEN 2 THEN releaseversion
ELSE NULL
END) AS 第二次发布版本
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY FILENAME ORDER BY releasetime ) AS no
FROM dbo.[table]
) tabtem1
GROUP BY tabtem1.filename
----------------------------------------------------------------------------------------------
filename 第一次发布日期 第一次发布版本 二次发布日期 第二次发布版本
文件1 2010-07-03 E1 NULL NULL
文件2 2010-08-03 E2 2010-09-03 E3
文件3 2008-08-03 E6 2009-08-03 E5
----------------------------------------------------------------------------------------------
SELECT filename ,
MAX(CASE tabtem1.no
WHEN 1 THEN releasetime
ELSE NULL
END) AS 第一次发布日期 ,
MAX(CASE tabtem1.no
WHEN 1 THEN releaseversion
ELSE NULL
END) AS 第一次发布版本 ,
MAX(CASE tabtem1.no
WHEN 2 THEN releasetime
ELSE NULL
END) AS 二次发布日期 ,
MAX(CASE no
WHEN 2 THEN releaseversion
ELSE NULL
END) AS 第二次发布版本,
MAX(CASE tabtem1.no
WHEN 3 THEN releasetime
ELSE NULL
END) AS 三次发布日期 ,
MAX(CASE no
WHEN 3 THEN releaseversion
ELSE NULL
END) AS 第三次发布版本
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY FILENAME ORDER BY releasetime ) AS no
FROM dbo.[table]
) tabtem1
GROUP BY tabtem1.filenamefilename 第一次发布日期 第一次发布版本 二次发布日期 第二次发布版本 三次发布日期 第三次发布版本
文件1 2010-07-03 E1 NULL NULL NULL NULL
文件2 2010-08-03 E2 2010-09-03 E3 NULL NULL
文件3 2008-08-03 E6 2009-08-03 E5 2010-08-03 E4