Sql server MSSQL-使用行号的一行中最低和第二最低

Sql server MSSQL-使用行号的一行中最低和第二最低,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我一直在进行一项查询,以提供员工的第一次和第二次审核日期以及审核结果。下面的查询将此信息分为两行(第一行和第二行)。但是,我需要数据显示在一行中。以下是我现在的疑问: SELECT EmployeeID,ReviewDate, ReviewResults FROM ( SELECT EmployeeID, ReviewDate, ReviewResults, MAX(case when RowNumber = 1 then ReviewDate end) as Lowest F

我一直在进行一项查询,以提供员工的第一次和第二次审核日期以及审核结果。下面的查询将此信息分为两行(第一行和第二行)。但是,我需要数据显示在一行中。以下是我现在的疑问:

SELECT EmployeeID,ReviewDate, ReviewResults FROM 
    (
    SELECT EmployeeID, ReviewDate, ReviewResults, MAX(case when RowNumber = 1 then ReviewDate end) as Lowest FROM
        (
        Select EmployeeID, a.ReviewDate, isnull(at.ReviewResults,'Not Completed') as ReviewResults,
        ROW_NUMBER() OVER (PARTITION BY EmployeeID Order By ReviewDate) as RowNumber
        FROM Employee p
        LEFT JOIN Administration a on p.EmployeeID = a.ManagerID
        LEFT JOIN AdminText at on a.ReviewID = at.ReviewID
        GROUP BY p.EmployeeID, a.ReviewDate, at.ReviewResults
        ) as sub_inner
    WHERE ReviewDate>=ISNULL(NULL,'1/1/1900')
        And ReviewDate<dateadd(day,1,ISNULL(NULL,'1/1/3000'))
        AND RowNumber Between 1 and 2
        GROUP BY EmployeeID, ReviewDate, ReviewResults
    ) as sub_outer
    GROUP BY EmployeeID, ReviewDate, ReviewResults
我想要的是:

ID        Review Date1    Review Date2   ReviewResults1 ReviewResults2
----      -------------   -------------  -------------  --------------
1         2001-07-05      2001-07-28      No Change     Raise
2         2001-07-23      2001-07-28      Promotion     No Change

不知道如何达到这个效果?提前感谢。

测试数据

DECLARE @TABLE TABLE (ID INT, [Review Date] DATETIME, ReviewResults VARCHAR(100))
INSERT INTO @TABLE VALUES
(1,         '2001-07-05 07:45:00.000',         'No Change'), 
(1,         '2001-07-28 10:00:00.000',         'Raise'),
(2,         '2001-07-23 10:00:00.000',         'Promotion'), 
(2,         '2001-07-28 12:45:00.000',         'No Change')
查询

;WITH CTE
AS (
    -- You would use your above query here 
    SELECT ID, [Review Date], ReviewResults
          , ROW_NUMBER() OVER (PARTITION BY ID ORDER BY [Review Date]) rn
    FROM @TABLE 
   )
SELECT C1.ID 
       ,C1.[Review Date]  AS [Review Date 1]
       ,C2.[Review Date]  AS [Review Date 2]
       ,C1.ReviewResults  AS [ReviewResults 1]
       ,C2.ReviewResults  AS [ReviewResults 2]       
FROM CTE C1 INNER JOIN CTE C2
ON C1.ID = C2.ID AND C1.rn +1 = C2.rn
结果集

╔════╦═════════════════════════╦═════════════════════════╦═════════════════╦═════════════════╗
║ ID ║      Review Date 1      ║      Review Date 2      ║ ReviewResults 1 ║ ReviewResults 2 ║
╠════╬═════════════════════════╬═════════════════════════╬═════════════════╬═════════════════╣
║  1 ║ 2001-07-05 07:45:00.000 ║ 2001-07-28 10:00:00.000 ║ No Change       ║ Raise           ║
║  2 ║ 2001-07-23 10:00:00.000 ║ 2001-07-28 12:45:00.000 ║ Promotion       ║ No Change       ║
╚════╩═════════════════════════╩═════════════════════════╩═════════════════╩═════════════════╝

能否显示预期输出中的第二行?您的查询将选择
ManagerID
。也添加该列。编辑以显示该列。我取出了管理器ID,结果集来自较新的查询运行,对此表示抱歉。谢谢
╔════╦═════════════════════════╦═════════════════════════╦═════════════════╦═════════════════╗
║ ID ║      Review Date 1      ║      Review Date 2      ║ ReviewResults 1 ║ ReviewResults 2 ║
╠════╬═════════════════════════╬═════════════════════════╬═════════════════╬═════════════════╣
║  1 ║ 2001-07-05 07:45:00.000 ║ 2001-07-28 10:00:00.000 ║ No Change       ║ Raise           ║
║  2 ║ 2001-07-23 10:00:00.000 ║ 2001-07-28 12:45:00.000 ║ Promotion       ║ No Change       ║
╚════╩═════════════════════════╩═════════════════════════╩═════════════════╩═════════════════╝