如何在SQL Server中获取当前版本的先前创建日期

时间:2017-01-22 05:27:01

标签: sql-server-2012 sql-server-2008-r2

我想在查询当前版本

时获取先前版本的创建日期
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

1 个答案:

答案 0 :(得分:0)

假设正确的版本是2008-r2,您需要使用子查询:

创建并填充样本表(在将来的问题中保存此步骤)

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,则可以使用CTELAG窗口函数来获得相同的结果:

;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