2017-01-22 8 views
0

Я хотел бы получить предыдущую версию даты создания при запросе для текущей версииКак я могу получить предыдущую CreationDate для текущей версии в SQL Server

PriducID | Productversion | Productcreationdate 
    100 |  1  | 5/5/2012 
    100 |  2  | 6/6/2013 
    100 |  3  | 7/7/2015 

Выхода ожидающей как ниже

PriducID | Productversion | Productcreationdate 
    100 |  2  | 5/5/2012 
+0

Какую версию сервера sql вы на самом деле работаете? –

ответ

0

Предполагая, что правильная версия - 2008-r2, вам нужно использовать подзаголовок:

Создать и заполнить таблицу образцов (Please спаси нас этот шаг в ваших будущих вопросов)

DECLARE @T AS TABLE 
(
    PriducID int, 
    Productversion int, 
    Productcreationdate date 
) 

INSERT INTO @T VALUES 
(100, 1, '2012-05-05'), 
(100, 2, '2013-06-06'), 
(100, 3, '2015-07-07') 

запрос:

SELECT PriducID, 
     Productversion, 
     (
      SELECT TOP 1 Productcreationdate 
      FROM @T t2 
      WHERE t2.Productcreationdate < t1.Productcreationdate 
      ORDER BY Productcreationdate DESC) As PrevProductcreationdate 
FROM @T t1 
WHERE Productversion = 2 

Результаты:

PriducID Productversion PrevProductcreationdate 
100   2    05.05.2012 00:00:00 

Если ваша версия 2012, вы можете использовать окно CTE и LAG чтобы получить тот же результат:

;WITH CTE AS 
(
    SELECT PriducID, 
      Productversion, 
      LAG(Productcreationdate) OVER (ORDER BY Productcreationdate) As PrevProductcreationdate 
    FROM @T 
) 

SELECT PriducID, 
     Productversion, 
     PrevProductcreationdate 
FROM CTE 
WHERE Productversion = 2