解决方案 »

  1.   


    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
    ----------------------------------------------------------------------------------------------
      

  2.   

    最后一句没写全
      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